Очистка временной шкалы
Задачи
Репозиторий для испытания подготовлен в директории ~/project/time-travel-git. Выполните следующую команду, чтобы просмотреть начальную историю коммитов:
cd ~/project/time-travel-git
git log --oneline
Вы должны увидеть следующие 4 коммита (хэши ваших коммитов будут отличаться):
886c6ad (HEAD -> master) Add project description
3a87b84 Add project codename
6b4cbb9 Fix typo in project name
0d71e5e Start secret project
Ваша миссия включает в себя следующие задачи:
- Объедините два самых старых коммита ("Start secret project" и "Fix typo in project name") в один коммит с сообщением "Initialize secret project".
- Измените текст сообщения коммита "Add project codename" на "Add project codename: Chronos".
- Оставьте самый новый коммит ("Add project description") без изменений.
Требования
Для успешного выполнения миссии соблюдайте следующие требования:
- Все операции должны выполняться в директории
~/project/time-travel-git.
- Для очистки истории коммитов необходимо использовать команду
git rebase -i (интерактивное перебазирование).
- Ваша итоговая история должна содержать ровно 3 коммита (вместо исходных 4).
- Содержимое файлов должно остаться неизменным — вы модифицируете только историю коммитов.
- По завершении испытания выполнение команды
git log --oneline должно показывать 3 коммита с правильными сообщениями.
Подсказки
Вот несколько полезных советов, которые помогут вам пройти испытание:
-
Интерактивное перебазирование позволяет манипулировать коммитами в вашей истории. Базовый формат команды:
git rebase -i <commit>
где <commit> — это коммит, предшествующий первому из тех, которые вы хотите изменить. Чтобы начать изменения с самого первого коммита, можно использовать:
git rebase -i --root
-
В окне интерактивного перебазирования вы увидите список коммитов с доступными действиями. Основные действия:
pick — использовать коммит как есть.
reword или r — использовать коммит, но изменить его сообщение.
squash или s — объединить этот коммит с предыдущим.
fixup или f — аналогично squash, но отбросить сообщение этого коммита.
-
Чтобы объединить коммиты, используйте squash или fixup для второго коммита в списке.
-
Чтобы изменить сообщение коммита, используйте действие reword.
-
После настройки плана перебазирования сохраните изменения и закройте редактор. Git проведет вас через оставшуюся часть процесса, открывая новые окна редактора по мере необходимости для правки сообщений.
-
Если вы допустили ошибку во время перебазирования, вы всегда можете прервать процесс командой:
git rebase --abort
и начать заново.
Пример
После завершения испытания ваш git log --oneline должен выглядеть примерно так (с другими хэшами коммитов):
abc1234 Add project description
def5678 Add project codename: Chronos
ghi9101 Initialize secret project