在git中强制合并的最佳方法是什么?

Sam*_*Fen 31 git merge

我有一个开发分支和生产分支的项目.最近我一直在开发一个大的新功能,所以我还没有合并到生产大约两周.与此同时,在生产中需要修复一些错误.

在大多数情况下,我能够在开发和樱桃中进行修复 - 将它们投入生产中.然而,有时候,我需要手工修复生产,因为两个分支的修复程度大不相同.重点是,这两个分支因为分裂而分歧很大.

现在我想把所有的dev推到生产中.我不关心自分割以来保留生产中的任何提交,我只是希望生产看起来完全像dev.[编辑:我希望生产看起来与开发以后完全一样,但不想在拆分之前重写历史]然而,当我尝试合并时,我得到了许多冲突,我宁愿不用手工修复.

在git中强制合并的最佳方法是什么?我可以将生产更改恢复为拆分,然后快进到开发分支吗?

smp*_*kes 26

您可以将dev分支推送到主repo生产分支:

git push --force upstream-remote dev:production
Run Code Online (Sandbox Code Playgroud)

upstream-remoteorigin如果您使用默认克隆,可能就是这样.

更新了mod'ed问题:

你可能不想revert在git意义上,但是,是的,这或多或少是你想要做的.就像是

git checkout -b merge <split hash>
git merge dev
git push --force origin merge:production
Run Code Online (Sandbox Code Playgroud)

<split hash>是您要保留的最后一次生产提交.

  • 顺便说一句,FWIW,保留一个与“生产”历史不同的“开发”分支是一种反模式。最好在“生产”合并后放弃任何功能分支,并从新的“生产”头创建新的功能分支。 (2认同)