Введение
Git — это мощная система контроля версий, которая помогает разработчикам отслеживать изменения, сотрудничать и эффективно управлять своей кодовой базой. Фундаментальным навыком в Git является возможность просматривать историю проекта, чтобы видеть, какие изменения были внесены, когда и кем. В этой лабораторной работе вы научитесь просматривать изменения, внесенные в конкретный коммит Git. Это необходимо для понимания эволюции вашего проекта, проверки кода и устранения неполадок.
Изучение истории коммитов
Прежде чем просматривать изменения в конкретном коммите, вам нужно сначала найти этот коммит. Команда git log используется для отображения истории коммитов репозитория. Для этой лабораторной работы для вас создан пример Git-репозитория по пути ~/project/git-demo.
Сначала перейдите в каталог проекта. Все команды в этой лабораторной работе должны выполняться из этого каталога.
cd ~/project/git-demo
Теперь используйте команду git log с опцией --oneline, чтобы увидеть компактное представление истории коммитов. Это покажет вам список всех коммитов, каждый с его уникальным хэшем коммита и сообщением коммита.
git log --oneline
Вы должны увидеть вывод, похожий на этот. Хэши коммитов на вашем экране будут отличаться, но сообщения будут теми же.
a1b2c3d (HEAD -> master) Add application file
e4f5g6h Update README with project description
i7j8k9l Initial commit: Add README.md
Каждая строка представляет собой коммит. 7-символьная строка в начале каждой строки (например, a1b2c3d) является сокращенной версией хэша коммита, который однозначно идентифицирует коммит. Вы будете использовать эти хэши на следующих шагах для проверки конкретных коммитов.
Просмотр изменений конкретного коммита
Теперь, когда у вас есть список коммитов, вы можете использовать команду git show для просмотра деталей и изменений конкретного коммита. Эта команда показывает метаданные коммита (автор, дата, сообщение) и "diff" (разницу), который выделяет точные строки, которые были добавлены или удалены.
Давайте рассмотрим второй коммит с сообщением "Update README with project description". Найдите его хэш коммита в выводе предыдущего шага.
Скопируйте хэш и используйте его с командой git show. Замените <commit-hash> на фактический хэш из вашего терминала.
git show <commit-hash>
Например, если хэш для этого коммита был e4f5g6h, вы бы выполнили:
git show e4f5g6h
Вывод будет выглядеть примерно так:
commit e4f5g6h1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7
Author: LabEx <labex@example.com>
Date: ...
Update README with project description
diff --git a/README.md b/README.md
index ...
--- a/README.md
+++ b/README.md
@@ -1 +1,3 @@
## My Project
+
+This is a simple project to demonstrate Git.
Разберем вывод:
- Метаданные коммита: Первые несколько строк показывают полный хэш коммита, автора, дату и сообщение коммита.
- Раздел Diff: Часть, начинающаяся с
diff --git, является "diff".--- a/README.mdи+++ b/README.mdуказывают на версии файла "до" и "после".- Строки, которым предшествует
+, — это строки, добавленные в этом коммите. - Строки, которым предшествует
-(не присутствуют в этом примере), — это строки, которые были удалены.
Просмотр изменений конкретного файла в коммите
Иногда коммит может изменять несколько файлов, но вас интересуют только изменения в одном конкретном файле. Вы можете указать git show отображать только изменения для определенного файла, добавив путь к файлу в конец команды.
Давайте посмотрим на последний коммит с сообщением "Add application file". Этот коммит добавил файл app.py.
Сначала получите хэш последнего коммита из вывода git log --oneline. Затем выполните git show с этим хэшем, за которым следуют -- и имя файла app.py.
git show app.py < latest-commit-hash > --
Например, если хэш последнего коммита a1b2c3d, команда будет выглядеть так:
git show a1b2c3d -- app.py
Теперь вывод будет ограничен изменениями, внесенными в app.py в этом коммите.
commit a1b2c3d...
Author: LabEx <labex@example.com>
Date: ...
Add application file
diff --git a/app.py b/app.py
new file mode 100644
index 0000000..d95f32b
--- /dev/null
+++ b/app.py
@@ -0,0 +1 @@
+print("Hello, Git!")
Обратите внимание, что вывод стал намного короче и содержит только diff для app.py. Строка new file mode 100644 указывает, что этот файл был создан в данном коммите.
Сравнение двух коммитов
В то время как git show используется для просмотра изменений в одном коммите, вы можете использовать git diff для просмотра совокупных изменений между любыми двумя коммитами. Это полезно для просмотра всех изменений, произошедших между двумя моментами времени, например, между двумя релизами.
Давайте сравним начальный коммит и последний коммит, чтобы увидеть все изменения, внесенные в проект на данный момент. Вам понадобятся хэши коммитов для первого коммита ("Initial commit: Add README.md") и последнего коммита ("Add application file").
Используйте команду git diff с двумя хэшами.
git diff <first-commit-hash> <last-commit-hash>
Например, если хэш вашего первого коммита i7j8k9l, а последнего — a1b2c3d:
git diff i7j8k9l a1b2c3d
Вывод покажет объединенный diff всех изменений, произошедших между этими двумя коммитами.
diff --git a/README.md b/README.md
index ...
--- a/README.md
+++ b/README.md
@@ -1 +1,3 @@
## My Project
+
+This is a simple project to demonstrate Git.
diff --git a/app.py b/app.py
new file mode 100644
index 0000000..d95f32b
--- /dev/null
+++ b/app.py
@@ -0,0 +1 @@
+print("Hello, Git!")
Этот вывод показывает как обновление README.md, так и создание app.py, давая вам полную картину эволюции проекта между этими двумя точками.
Резюме
В этой лабораторной работе вы научились перемещаться по истории репозитория Git и просматривать изменения. Вы практиковались в использовании git log для вывода списка коммитов, git show для просмотра деталей и изменений в одном коммите (как для всего коммита, так и для конкретного файла), а также git diff для сравнения различий между двумя коммитами. Эти команды являются основополагающими для понимания изменений в коде, отладки и эффективного сотрудничества в любом проекте на основе Git.



