Показывать общее количество локальных изменений на файл в состоянии git - PullRequest
0 голосов
/ 17 октября 2019

Я хотел бы видеть количество локальных изменений, которые я сделал, в списке, похожем на git status. Примерно так:

  • MyExample.cpp (3)
  • AnotherFile.cpp (17)

Где, если я запусту git difftool MyExample.cpp, он покажет3 локальных изменения.

Я хочу это, чтобы я мог сначала вручную проверить файлы с наименьшим количеством локальных изменений, чтобы быстрее уменьшить размер списка git status и отложить файлы с наибольшим количеством изменений до конца.

Я пытался git diff --stat, но, похоже, показывает общее количество удаленных / локальных изменений

1 Ответ

0 голосов
/ 17 октября 2019

git status просто не делает этого. Он запускает внутренний эквивалент git diff --name-status --cached (для сравнения HEAD с индексом для отчета по changes staged for commit) и внутренний эквивалент git diff --name-status (для сравнения индекса с рабочим деревом и отчета по changes not staged for commit). Флаг --name-status заставляет внутренний diff выйти и перейти к следующему файлу , как только он узнает, что файлы являются или не отличаются , без фактического выяснения того, чторазличия есть. Следовательно, git status просто не может рассказать вам как различаются два файла.

Чтобы получить то, что вы хотите, вам нужно запустить git diff самостоятельно,вместо того, чтобы git status запустить git diff --name-status для вас. Таким образом, вы можете установить свои собственные флаги.

Я пробовал git diff --stat, но, похоже, показывает общее количество удаленных / локальных изменений ...

Там неттакая вещь, как «удаленные / локальные изменения».

Git хранит файлы . Каждый коммит имеет полный и полный снимок каждого файла. Вы можете сравнить два коммита, что говорит Git сравнивать файлы в снимках. Извлекая, скажем, dir/file1 из снимка A и dir/file1 из снимка B, git diff теперь может вычислить разницу между этими двумя файлами и сообщить набор инструкций, с помощью которых a/dir/file1 можетможет быть изменено на b/dir/file1.

Подсчет этих инструкций дает вам --stat версию этой разницы.

Команда git diff не ограничивается просмотром только при двух коммитах: он также может сравнивать один коммит с вашим индексом, или один коммит с вашим рабочим деревом, или ваш индекс с вашим рабочим деревом. Так как git status работает, запустив two git diff s, вы можете получить то, что you хочет, запустив two git diff s. Скажите первому, чтобы он сравнивал фиксацию HEAD с индексом, как git status указывает, что первый сравнивает HEAD с индексом. Скажите вашему второму git diff, чтобы сравнивать индекс с рабочим деревом, как git status говорит второму разнице сравнивать индекс с рабочим деревом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...