6. Історія

Перегляд різниці між комітами

Раніше ми використовували git log, щоб побачити загальну історію репозиторію. Але часто хочеться побачити коміти, які зачепили конкретний файл.

Наприклад, якщо в одному з файлів трапився дивний шматок коду і хочеться з'ясувати, хто й навіщо його змінив, спершу варто подивитися історію саме цього файла. Для цього додай до команди git log шлях до файла, наприклад git log hello.html.

Завдання
Виконано

Переглянь історію файла hello.html за допомогою команди вище.

Підказка: пам'ятай, що вивід git log можна гортати стрілками і на клавіатурі. Щоб вийти з режиму pager, натисни q.

Тепер зробімо те саме з файлом style.css.

Завдання
Виконано

Переглянь історію файла style.css.

Як бачиш, Git показує тільки ті коміти, що зачепили вказаний файл. Це дуже зручно, коли треба простежити, як файл змінювався з часом. А як порівняти самі зміни між двома комітами?

Зараз з'ясуємо!

Ми вже використовували 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 не вміщається на один екран, термінал переходить у режим pager. Як і раніше, вивід можна гортати стрілками і на клавіатурі. Щоб вийти з режиму pager, натисни 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
Хочеш спробувати Сюжетний режим?

Проходь курс так, як він і задуманий: маленькими порціями, у сфокусованому лінійному порядку, поступово відкриваючи статті Gitopedia. Будь-коли можна продовжити зі справжнім Git у VS Code/Cursor/Antigravity/Windsurf.

Сюжетний режим
БЕЗКОШТОВНО
але потрібен вхід