Можно ли легко переместить все коммиты из одной ветви в другую как один коммит?
Я знаю, что могу сделать интерактивный перебаз, перефразировать первый коммит и исправить все остальное. Но если ветка содержит сотни коммитов, она становится очень утомительной.
Есть ли более простой способ?
2 ответа
Ты можешь использовать git merge --squash
раздавить коммиты в один, сливаясь с веткой.
Переключиться на целевую ветку
$ git checkout target-branch
затем используйте
$ git merge --squash original-branch
Все коммиты в original-branch
будет объединен в один и применен к target-branch
,
Вы можете сделать это с git cherry-pick -n
, Такой подход является более гибким по сравнению с git merge --squash
поскольку он позволяет указать произвольный диапазон коммитов:
git cherry-pick -n OTHER_BRANCH~100..OTHER_BRANCH
git commit -m "Merged 100 commits from OTHER_BRANCH"
git cherry-pick
-n|--no-commit
Обычно
git cherry-pick
Команда автоматически создает последовательность коммитов. Этот флаг применяет изменения, необходимые для выбора каждого именованного коммита, в ваше рабочее дерево и индекс без каких-либо коммитов. Кроме того, когда используется эта опция, ваш индекс не должен соответствовать фиксации HEAD. Выбор вишни выполняется против начального состояния вашего индекса.Это полезно, когда вишня выбирает более одного эффекта коммитов для вашего индекса подряд.