Простое перебазирование коммитов в Git

Система Git предоставляет два способа внесения изменений при работе с ветками: слияние и перебазирование.

Достоинством перебазирования является то, что история коммитов обеих веток, в отличие от слияния, будет выглядеть более линейной и простой для восприятия членами команды, работающей на одним проектом.

В Git слияние, выполняемое с помощью команды merge, происходит как трехстороннее объединение последних изменений двух сливаемых веток и самого нового снимка родительской ветки, общей для этих сливаемых веток. При этом сливаются только конечные снимки коммитов веток, а не вся их предыдущая история.

Перебазирование предполагает применение изменений из одной ветки (текущей) поверх другой ветки (которая сливается с текущей). Давайте создадим ветку test, в которой мы сделаем новый файл file.txt, проиндексируем его и сделаем коммит:

terminalgit branch test
git switch test
git add file.txt
git commit -m "commit from branch test"

Теперь переключимся на ветку test и перебазируем ее относительно главной ветки master:

terminalgit checkout test
git rebase master

Сам процесс перебазирования происходит следующим образом: сначала Git делает снимок родительской ветки master, который сохраняется во временном файле. Затем текущая ветка test вставляет свои изменения после самого последнего коммита ветки master. Теперь история коммитов основной ветки будет выглядеть так:

После перебазирования история коммитов ветки test также будет выглядеть аналогично ветке master.

Затем этого можно перейти на ветку master и выполнить слияние перемоткой, т.е. master снова станет главной и включит в себя все изменения с ветки test:

terminalgit merge test
Задание 1

Создайте две ветки test1 и test2, в каждой из которых будет по три коммита на разные файлы, затем выполните их слияние простым перебазированием.