Menu
Coddy logo textTech

Git Rebase

Последнее обновление

git rebase перемещает коммиты вашей ветки так, чтобы они переприменялись поверх другой ветки, создавая прямую линейную историю вместо коммита слияния. Интерактивный rebase (-i) идёт дальше, позволяя объединять, переупорядочивать, редактировать или удалять коммиты. Поскольку rebase переписывает коммиты, делайте это только с работой, которой вы ещё не поделились.

Попробуйте это в терминальном playground - настоящей оболочке в вашем браузере, ничего не нужно устанавливать.

git rebase проигрывает коммиты вашей ветки поверх main как новые копии, оставляя прямую линейную историю.

Синтаксис

CommandWhat it does
git rebase mainПереприменяет ваши коммиты поверх main
git rebase -i HEAD~3Интерактивно редактирует последние 3 коммита
git rebase --onto main old newПеремещает диапазон коммитов на main
git rebase --continueПродолжает после разрешения конфликтов
git rebase --abortОтменяет rebase и восстанавливает ветку
git pull --rebaseДелает pull и rebase вместо merge

Ключевые слова интерактивного rebase

В редакторе, который открывает -i, замените pick на одно из этих.

KeywordWhat it does
pickСохраняет коммит
rewordСохраняет коммит, редактирует его сообщение
squashСворачивает в предыдущий коммит, объединяет сообщения
fixupСворачивает, но отбрасывает это сообщение
dropПолностью удаляет коммит

Часто задаваемые вопросы о git rebase

Что делает git rebase?
Он берёт коммиты вашей текущей ветки и переприменяет их один за другим поверх другой ветки, как если бы вы начали свою работу с последнего коммита той ветки. Результат - линейная история без коммита слияния. Коммиты при этом переписываются (получают новые хеши).
Что такое интерактивный rebase?
git rebase -i <base> открывает редактор со списком коммитов начиная с <base>, где вы можете переупорядочить их, squash несколько в один, reword сообщения, edit коммит или drop его. Это основной инструмент для наведения порядка в беспорядочной серии коммитов перед тем, как поделиться ими.
Каково золотое правило перебазирования?
Никогда не перебазируйте коммиты, на которых другие уже основали свою работу, - обычно всё, что запушено в общую ветку. Поскольку rebase переписывает коммиты, это заставляет всех остальных согласовывать разошедшуюся историю. Свободно перебазируйте локальные незапушенные коммиты; используйте merge или revert для публичных.
Как исправить или отменить rebase с конфликтами?
Когда rebase останавливается на конфликте, разрешите файлы, сделайте им git add, затем выполните git rebase --continue. Используйте git rebase --skip, чтобы отбросить текущий коммит, или git rebase --abort, чтобы полностью отменить и вернуть ветку в состояние до начала rebase.
Могу ли я потренироваться в этом онлайн?
Да. Откройте терминальный playground, чтобы выполнить git rebase в настоящей оболочке в вашем браузере - ничего не нужно устанавливать. Бесплатный интерактивный курс Git от Coddy также разбирает перебазирование шаг за шагом.
Coddy programming languages illustration

Изучайте Git с Coddy

НАЧАТЬ