Сравнение коммитов
До этого мы использовали git log, чтобы посмотреть общую историю репозитория. Но часто бывает нужно найти только те коммиты, которые затронули конкретный файл.
Например, если в файле нашёлся странный кусок кода и хочется узнать, кто и зачем его туда добавил, логично сначала посмотреть историю именно этого файла. Это можно сделать, добавив путь к файлу после команды git log, например: git log hello.html.
Посмотри историю файла hello.html с помощью команды выше.
Подсказка: Напоминаю, что прокручивать вывод git log можно стрелками и . Чтобы выйти из режима постраничного вывода, нажми q.
Теперь давай сделаем то же самое для файла style.css.
Проверь историю файла style.css.
Как видишь, выводятся только те коммиты, которые затронули указанный файл. Это суперполезно, когда нужно отследить, как менялся конкретный файл. Но как сравнить сами изменения между двумя коммитами?
Мы уже использовали git diff, чтобы проверить, какие изменения внесены в рабочее дерево по сравнению с областью подготовки или последним коммитом. Теперь посмотрим, как сравнить любые два коммита в репозитории.
Например, давай выясним, что изменилось в файле hello.html со времён версии 1.0 (мы создавали тег 1.0 в главе про теги, помнишь?).
Чтобы сравнить два коммита, к команде git diff нужно добавить две ссылки на них: git diff <from> <to>. Порядок важен: Git покажет, что нужно поменять в первом коммите, чтобы получить второй. Если передать только одну ссылку, Git сравнит этот коммит с текущим рабочим деревом.
Не забывай, что на коммиты можно ссылаться по-разному: по хешу, тегу, имени ветки или с помощью относительных ссылок вроде HEAD~1.
Давай сравним версию 1.0 файла hello.html с его состоянием в последнем коммите. Это можно сделать такой командой:
git diff 1.0 HEADЗапусти команду выше, чтобы сравнить два коммита.
Подсказка: Если вывод git diff не помещается на экране, терминал снова перейдёт в режим постраничного вывода. Прокручивай текст стрелками и , а для выхода жми q.
На экране должно появиться что-то похожее на это:
diff --git a/hello.html b/hello.htmlindex ae7ab8c..7833e8a 100644--- a/hello.html+++ b/hello.html@@ -1,4 +1,7 @@ <html>+ <head>+ <link rel="stylesheet" href="style.css"/>+ </head> <body> <h1>Hello, World!</h1> </body>diff --git a/style.css b/style.cssnew file mode 100644index 0000000..d224431--- /dev/null+++ b/style.css@@ -0,0 +1,3 @@+h1 {+ color: red;+}\ No newline at end of fileЭтот вывод показывает разницу между двумя коммитами: удалённые строки отмечены минусом (-), а добавленные — плюсом (+).
Пройди курс так, как задумано: порционное обучение, чёткий порядок и постепенное открытие статей в Gitопедии. В любой момент можно продолжить работу с настоящим Git прямо в VS Code, Cursor, Antigravity или Windsurf.
(требуется войти в аккаунт)