Каков наилучший способ слияния в git?
У меня есть проект с веткой dev и производственной ветвью. Недавно я работал над большим набором функций в dev, поэтому я не слился в производство около двух недель. Тем временем, однако, были некоторые ошибки, которые необходимо было зафиксировать в производстве.
По большей части мне удалось сделать исправления в dev и cherry-pick их в производство. Иногда, однако, мне нужно было бы наладить производство вручную, так как исправления были существенно разными в двух ветвях. Точка в том, что две ветки расходятся с честным битом, так как они расщепляются.
Теперь я хочу просто подтолкнуть всех разработчиков к производству. Я не забочусь о сохранении каких-либо коммитов в производстве с момента раскола, я просто хочу, чтобы производство выглядело точно как dev. [EDIT: Я хочу, чтобы производство выглядело точно так же, как dev с момента разделения, но не хочу переписывать историю до разделения). Однако, когда я пытаюсь объединиться, я получаю десятки конфликтов, которые я бы предпочел не исправлять вручную.
Каков наилучший способ слияния в git? Могу ли я вернуть свои производственные изменения обратно на раскол, а затем просто перейти к ветки dev?
Ответы
Ответ 1
Вы можете просто нажать свою ветвь dev на производственную ветвь master repo:
git push --force upstream-remote dev:production
upstream-remote
может быть origin
, если вы используете клон по умолчанию.
Обновлен для модного вопроса:
Вероятно, вы не хотите revert
в значении git, но да, это более или менее то, что вы хотите сделать. Что-то вроде
git checkout -b merge <split hash>
git merge dev
git push --force origin merge:production
< split hash > была последней фиксацией на производстве, которую вы хотите сохранить.
Ответ 2
Это объединит ваш newBranch в существующем baseBranch
git checkout <baseBranch> // checkout baseBranch
git merge -s ours <newBranch> // this will simply merge newBranch in baseBranch
git rm -rf .
git checkout newBranch -- .