Способ прогнозирования конфликта слияния состоит в том, чтобы выполнить слияние. 1 Для этого используйте временную ветвь:
git checkout -b test master
git merge feature1
git merge feature2
git merge feature3
Если все прошло хорошо, слияния работают. Теперь вы можете, если хотите, использовать это окончательное объединение в качестве результата для master
, выполнив операцию fast-forward , чтобы переместить master
вверх для соответствия test
:
git checkout master
git merge --ff-only test # --ff-only means "fail if fast-forward is not possible"
или просто удалить ответвление test
, если вы не хотите этого делать и / или слияние не удалось. Если слияние не удалось, используйте git merge --abort
, чтобы выйти из него, как в сноске 1, или git reset --hard
(что делает то же самое). Затем используйте git checkout master
и git branch -D test
:
git merge --abort # if needed
git checkout master
git branch -D test
Единственная причина использовать отдельную ветку test
, указанную выше, состоит в том, чтобы избежать перемещения master
, пока мы не выполним все три слияния. Но поскольку имена ветвей являются частными для каждого репозитория, для этого никогда не требуется требование : вы можете просто выполнить слияние, а затем откатиться (с git reset --hard
) к предыдущему состоянию, если вы этого не сделаете нравится результат. Только не git push
коммиты или не делайте их доступными для git fetch
, пока не получите желаемый результат.
1 Вы можете выполнить тестовое слияние без примите коммит, если хотите, используйте git merge --abort
, чтобы представить, что вы никогда не запускали тест. Но это не работает, когда вам нужно сделать более одного слияния, как в случае с вашим вопросом.
Осьминог слияния
Однако есть еще один вариант, который Git звонит осьминог сливается . (Примечание: Вы не можете сделать это с помощью GitHub, и, вероятно, не с некоторыми другими веб-интерфейсами.) Чтобы выполнить слияние осьминога, которое объединяет все три функции в master
одновременно:
git checkout master
git merge feature1 feature2 feature3
Если есть какие-либо конфликты, слияние осьминога завершится неудачей.
(Я никогда не использовал слияния осьминогов в реальной работе. Они не достигают ничего, чего вы не можете делать с обычными слияниями, и люди находят их запутанными, поэтому я склонен придерживаться с регулярными слияниями.)