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

时间:2012-02-24 17:07:18

标签: git merge

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

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

现在我想把所有的dev推到生产中。我不关心自分割以来保留生产中的任何提交,我只是希望生产看起来完全像dev。 [编辑:我希望生产看起来与dev 完全分开,但不想在拆分之前重写历史记录]但是,当我尝试合并时,我得到了几十个冲突,我想不想手工修理。

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

2 个答案:

答案 0 :(得分:26)

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

git push --force upstream-remote dev:production
如果您使用默认克隆,则

upstream-remote可能只是origin

更新了mod'ed问题:

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

这样的东西
git checkout -b merge <split hash>
git merge dev
git push --force origin merge:production

&lt; split hash&gt;是你想要保留的最后一次生产承诺。

答案 1 :(得分:-4)

这会将你的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 -- .