6. История

Сравнение коммитов

До этого мы использовали 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.html
index 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.css
new file mode 100644
index 0000000..d224431
--- /dev/null
+++ b/style.css
@@ -0,0 +1,3 @@
+h1 {
+ color: red;
+}
\ No newline at end of file

Этот вывод показывает разницу между двумя коммитами: удалённые строки отмечены минусом (-), а добавленные — плюсом (+).

Next step
Хочешь попробовать Сюжетный режим?

Пройди курс так, как задумано: порционное обучение, чёткий порядок и постепенное открытие статей в Gitопедии. В любой момент можно продолжить работу с настоящим Git прямо в VS Code, Cursor, Antigravity или Windsurf.

Сюжетный режим
БЕСПЛАТНО
(требуется войти в аккаунт)