ВНИМАНИЕ! Скидки на тариф Практик: 700$ 500$!
Обучение, помощь в поиске работы и заказов, стажировка на реальных проектах. Жми для подробностей →
⊗gtPmBrCSR 44 of 66 menu
Бесплатные курсы по Git. Начинаем, когда соберется 1000 желающих:) Жми для записи!

Простое перебазирование коммитов в 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, в каждой из которых будет по три коммита на разные файлы, затем выполните их слияние простым перебазированием.

enru