Тестирование не измененных коммитов
На этом этапе мы создадим новый коммит без использования флага --amend
и посмотрим, как он появится в git log
и git reflog
. Это поможет закрепить ваше понимание того, как эти команды по-разному отслеживают историю.
Сначала добавим еще немного содержимого в файл message.txt
. Мы добавим новую строку:
echo "Hello again, Future Me!" >> 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 another message"
Вы должны увидеть вывод, подтверждающий новый коммит:
[master 1a2b3c4] Add another message
1 file changed, 1 insertion(+)
Теперь проверим git log
еще раз:
git log --oneline
На этот раз вы должны увидеть два коммита:
1a2b3c4 (HEAD -> master) Add another message
a1b2c3d Send a message to the future
Оба коммита видны в git log
, потому что второй коммит был добавлен поверх первого, продолжая историю ветки.
Наконец, проверим git reflog
:
git reflog
Вы должны увидеть вывод, похожий на следующий:
1a2b3c4 (HEAD -> master) HEAD@{0}: commit: Add another message
1a2b3c4 (HEAD -> master) HEAD@{1}: commit (amend): Send a message to the future
e4f5g6h HEAD@{2}: commit (initial): Send a message to the future
Обратите внимание, что git reflog
показывает все действия: начальный коммит, измененный начальный коммит и новый коммит, который мы только что создали. Каждое действие, которое перемещало HEAD
, записывается.
Этот этап показывает, что когда вы создаете новый коммит без --amend
, и git log
, и git reflog
покажут новый коммит, но git reflog
по-прежнему сохранит историю измененного коммита, который git log
не показывает.