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

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

По большей части мне удалось внести исправления в dev и собрать их в производство. Однако иногда мне приходилось исправлять производство вручную, поскольку исправления существенно отличались в двух ветвях. Дело в том, что с тех пор, как они разделились, две ветви разошлись.

Теперь я хочу просто запустить всех разработчиков в производство. Меня не волнует сохранение каких-либо коммитов в производстве после разделения, я просто хочу, чтобы производство выглядело точно как dev. [РЕДАКТИРОВАТЬ: я хочу, чтобы производство выглядело точно так же, как dev после разделения, но я не хочу переписывать историю до разделения] Однако, когда я пытаюсь объединиться, я получаю десятки конфликтов, которые я предпочел бы не устранять вручную.

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

2 ответа

Решение

Вы можете просто вставить свою ветку 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

был последним коммитом на производство, которое вы хотите сохранить.

Это объединит ваш новый филиал с существующим базовым.

git checkout <baseBranch> // checkout baseBranch
git merge -s ours <newBranch> // this will simply merge newBranch in baseBranch
git rm -rf . 
git checkout newBranch -- . 
Другие вопросы по тегам