Чтобы объединить текущую ветку с другой веткой без проверки другой ветки:
Быстрое слияние
Это действительно легко. По определению, ускоренное слияние просто означает, что указатель ветви перемещается вперед в дереве фиксации. Так что все, что вам нужно сделать, это просто имитировать , что:
git branch -f master dev
Предостережения: Предполагается, что master
указывает на коммит, который также находится в dev
ветви или некоторой другой ветви. Если этого не произойдет, вы рискуете потерять работу! В отличие от git merge
, который создаст коммит слияния (или будет жаловаться), когда ускоренная перемотка вперед невозможна, этот метод тихо заставляет указатель ветки, указывающий на другой коммит.
Это также предполагает, что вы являетесь единственным, кто работает в репо, и / или вы знаете, что делаете.
Подсказка: Если вы сделали git fetch
и у вас есть новые коммиты в origin/master
, вы можете переместить ветку master
без проверки с помощью:
git branch -f master origin/master
Слияние с помощью коммита слияния
Это не всегда возможно. Чтобы создать коммит слияния, вы должны выполнить операцию слияния. И чтобы выполнить операцию слияния, вы должны иметь коммиты в другой ветке, которых нет в текущей ветке.
Если у вас есть коммиты в ветке master
, которые не в dev
ветке, вы можете:
Отказ от ответственности: Это просто подтверждение концепции, просто чтобы показать, что иногда можно выполнить слияние с другой веткой без проверки. Если вы хотите использовать его каждый день, вы, вероятно, захотите создать для него псевдоним с помощью перенаправления оболочки или создать для него сценарий оболочки. Опять же, вы также можете создать сценарий оболочки для более короткого процесса, показанного в вопросе.
git checkout -b temp
git merge --no-ff -e master
git branch -f master temp
git checkout dev
git branch -D temp
Пояснение:
- Извлечение временной ветки, которая указывает на тот же коммит, что и текущая ветка.
Слияние master
с временной веткой и запуск редактора сообщений коммита. Если вы хотите, чтобы коммит слияния выглядел как , вы слили ветку dev
в master
, отредактируйте его из этого:
Merge branch 'master' into temp
на это:
Merge branch 'dev'
Совет: Вы можете использовать -m "Merge branch 'dev'"
вместо -e
, чтобы быть быстрее.
- Обновите указатель ветки
master
, чтобы он указывал на коммит слияния.
- Проверьте ветку
dev
.
- Принудительно удалить временную ветку.
Это все еще касается вашего рабочего дерева, но минимально так. Он не откатывает дерево до состояния первоначального master
, чтобы просто внести изменения в разработку. Некоторым может быть все равно, но для других это может быть важно.