git diff COMMIT позволяет сравнивать изменения, находящиеся в разных коммитах или ветках. Также передавать можно HEAD и тэги. Нужные значения указываются вместо COMMIT в примере.
Сравнение файлов между двумя коммитами (git diff commit)
Каждый коммит в git имеет свой идентификатор, который можно выявить при помощи git log.
Идентификатор можно передать git diff
Как найти идентификатор коммита
Чтобы результат был более наглядным добавляется ключ pretty=oneline
git log --pretty=oneline
294276ecd27183dbfa464c45b41cfe1c24082ba0 (HEAD -> master, origin/master) added readme
d4cc089501fb2a9c64eb0454fe2e6c2205f1e527 added readme
b467651fe47da55118e138e52dd4c1f41e6f2983 ready to go
git log выводит идентификатор и добавленный при коммите комментарий.
По умолчанию сравнение выполняется с текущим состоянием, достаточно передать ID
git diff ufihj09kik123030c389545fgf54452265545455f102
diff —git a/README.md b/README.md
index 5d1ae95..41c1db5 100644
— a/README.md
+++ b/README.md
+
+### How to use ###
…skipping…
\ No newline at end of file
Часть вывода пропущена, сравниваются все файлы, которые были изменены.
Пример приведен на скриншоте:
Здесь приводится список коммитов. В тестовом репозитории один коммит. Потом выполнено сравнение текущего состояния с состоянием в коммите.
Коммит для сравнения передается за счёт идентификатора.
Между двумя коммитами
Таким же образом передается через пробел два идентификатора коммитов
git diff d4cc089501fb2a9c64eb0454fe2e6c2205f1e527 b467651fe47da55118e138e52dd4c1f41e6f2983
diff —git a/README.md b/README.md
index 5d1ae95..486813d 100644
— a/README.md
+++ b/README.md
После последнего примера появился ещё один коммит.
git diff COMMIT показывает результат сравнения состояний:
Сравнение двух файлов в разных коммитах
Файл передается после идентификатора через двоеточие после идентификатора каждого коммита.
git diff d4cc089501fb2a9c64eb0454fe2e6c2205f1e527:README.md b467651fe47da55118e138e52dd4c1f41e6f2983:README.md
О том как сравнивать файлы в одной ветке при помощи git diff.