Подтвердить что ты не робот

Каков наилучший способ слияния в git?

У меня есть проект с веткой dev и производственной ветвью. Недавно я работал над большим набором функций в dev, поэтому я не слился в производство около двух недель. Тем временем, однако, были некоторые ошибки, которые необходимо было зафиксировать в производстве.

По большей части мне удалось сделать исправления в dev и cherry-pick их в производство. Иногда, однако, мне нужно было бы наладить производство вручную, так как исправления были существенно разными в двух ветвях. Точка в том, что две ветки расходятся с честным битом, так как они расщепляются.

Теперь я хочу просто подтолкнуть всех разработчиков к производству. Я не забочусь о сохранении каких-либо коммитов в производстве с момента раскола, я просто хочу, чтобы производство выглядело точно как dev. [EDIT: Я хочу, чтобы производство выглядело точно так же, как dev с момента разделения, но не хочу переписывать историю до разделения). Однако, когда я пытаюсь объединиться, я получаю десятки конфликтов, которые я бы предпочел не исправлять вручную.

Каков наилучший способ слияния в git? Могу ли я вернуть свои производственные изменения обратно на раскол, а затем просто перейти к ветки dev?

4b9b3361

Ответ 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 -- .