Тестирование с использованием более старых коммитов
На предыдущих этапах мы узнали о HEAD
и о том, как получить хэш его коммита. Теперь давайте посмотрим, как Git ссылается на более старые коммиты.
В настоящее время в нашем репозитории есть только один коммит. Чтобы показать, как ссылаться на более старые коммиты, нам нужно создать еще один коммит.
Сначала добавим еще одну строку в файл message.txt
. Используем команду echo
с оператором >>
для добавления текста в файл:
echo "This is a second message." >> message.txt
Теперь проверим статус:
git status
Вы должны увидеть, что файл message.txt
был изменен:
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: message.txt
no changes added to commit (use "git add and/or git commit -a)
Теперь добавим изменения в индекс и создадим новый коммит:
git add message.txt
git commit -m "Add a second message"
Вы должны увидеть вывод, указывающий на то, что новый коммит был создан:
[master a1b2c3d] Add a second message
1 file changed, 1 insertion(+)
Теперь у нас есть два коммита. Давайте снова посмотрим журнал:
git log --oneline
Опция --oneline
дает краткий вид журнала. Вы должны увидеть что-то вроде этого (хэши будут разными):
a1b2c3d (HEAD -> master) Add a second message
e4f5g6h Send a message to the future
Верхний коммит - это самый новый, и именно на него указывает HEAD
. Коммит ниже - это более старый.
Git предоставляет способы ссылаться на коммиты относительно HEAD
. Коммит непосредственно перед HEAD
можно ссылаться как HEAD~1
или HEAD^
. Давайте попробуем получить хэш предыдущего коммита с помощью git rev-parse
:
git rev-parse HEAD~1
Вы должны увидеть хэш первого коммита, который вы сделали:
e4f5g6h7i8j9k0l1m2n3o4p5q6r7s8t9u0v1w2x3
Этот хэш должен совпадать с хэшем коммита "Send a message to the future" в выводе команды git log --oneline
.
Вы можете использовать HEAD~2
, HEAD~3
и так далее, чтобы ссылаться на коммиты, находящиеся дальше в истории. Эта относительная ссылка очень полезна для навигации по истории проекта и выполнения операций с определенными предыдущими версиями.