Сравнение с последним коммитом
Для вывода изменений в файлах по сравнению с последним коммитом, используется git diff без параметров:
git diff
Команда выводит изменения в файлах, которые еще не были добавлены в индекс. Сравнение происходит с последним коммитом.
Сравнение с последним коммитом, включая файлы в индексе
Если вы изменили какие-нибудь файлы в вашем рабочем каталоге и добавили один или несколько из них в индекс (с помощью git add), то команда git diff не покажет изменения в этих файлах. Чтобы показать изменения в файлах, включая файлы, добавленные в индекс, используется ключ --cached:
git diff --cached
Сравнение коммитов
Команда git diff позволяет сравнивать два различных коммита. Сначала нужно определить хеш (ID) коммитов, которые требуется сравнивать. Можно воспользоваться командой git log, чтобы вывести список коммитов и их идентификаторы:
git log --oneline
Теперь сравним два коммита. Для этого в качестве первого аргумента команде git diff указывается хеш первого коммита, а вторым аргументом хеш второго коммита, например:
git diff 4612297 5e356cf
Сравнение двух веток
Для вывода всех изменений между концами двух веток, необходимо для git diff указать имена веток:
git diff branch1 branch2
Сравнение файлов между двумя ветками
Чтобы сравнить конкретные файлы между двумя ветками используется команда:
git diff branch1 branch2 ./myfile.cpp
Вместо branch1, branch2 нужно указать название веток, а вместо myfile.cpp путь до сравниваемого файла. Через пробел можно добавить еще файлы для сравнения.
Исключить некоторые файлы из сравнения
Иногда нужно выполнить git diff, но исключить один или несколько файлов, чтобы команда git diff их проигнорировала. Для этого используется запись вида ’:(exclude)имя_файла’ или короткая запись ’:!имя_файла’
Пример:
git diff -- . ':(exclude)file1.abc' ':(exclude)file2.abc'
Или более короткая запись:
git diff -- . ':!file1.abc' ':!file2.abc'
Сравнивать только изменения в файлах (игнорировать новые и удаленные файлы)
Чтобы исключить из сравнения новые и удаленные файлы, можно воспользоваться опцией --diff-filter, которая позволяет выбирать какие именно изменения (файлы) нужно сравнивать.
Чтобы выполнить сравнение только изменений внутри файлов (игнорируя новые, удаленные, переименованные файлы) используется ключ Modified (M) — --diff-filter=M:
git diff --diff-filter=M
Комментарии
07:33
git diff выводит сравнение между индексом (его еще нет в коммите) и рабочей папкой (ее тоже нет в коммите).
07:53