Простое перебазирование коммитов в Git
Система Git предоставляет два способа внесения изменений при работе с ветками: слияние и перебазирование.
Достоинством перебазирования является то, что история коммитов обеих веток, в отличие от слияния, будет выглядеть более линейной и простой для восприятия членами команды, работающей на одним проектом.
В Git слияние, выполняемое с помощью
команды merge, происходит как
трехстороннее объединение последних изменений
двух сливаемых веток и самого нового снимка
родительской ветки, общей для этих сливаемых веток.
При этом сливаются только конечные снимки
коммитов веток, а не вся их
предыдущая история.
Перебазирование предполагает применение изменений
из одной ветки (текущей) поверх другой ветки (которая сливается
с текущей). Давайте создадим ветку test, в которой
мы сделаем новый файл file.txt,
проиндексируем его и сделаем коммит:
git branch test
git switch test
git add file.txt
git commit -m "commit from branch test"
Теперь переключимся на ветку test
и перебазируем ее относительно главной
ветки master:
git checkout test
git rebase master
Сам процесс перебазирования происходит следующим
образом: сначала Git делает снимок родительской ветки
master, который сохраняется во временном файле. Затем
текущая ветка test вставляет свои изменения
после самого последнего коммита ветки master.
Теперь история коммитов основной ветки будет
выглядеть так:
После перебазирования история коммитов
ветки test также будет выглядеть
аналогично ветке master.
Затем этого можно перейти на ветку master
и выполнить слияние перемоткой,
т.е. master снова станет главной и включит
в себя все изменения с ветки test:
git merge test
Создайте две ветки test1 и test2, в каждой из которых
будет по три коммита на разные файлы, затем выполните их
слияние простым перебазированием.