Git合并他们:简单?

时间:2010-02-20 18:11:52

标签: git merge

我已经检查了各种问题。第一个提供a huge question and answer(相关?不确定),第二个提供wrong answer as best answer.

我有一个名为great-use-this的分支。我有另一个名为master的分支。我想将great-use-this合并到master中,并避免自动合并冲突。

最简单,最简单的方法是什么?

注意:我实际上已经想到了这一点(使用第三个分支和ours,但无论如何这样做都很好。

3 个答案:

答案 0 :(得分:25)

是的,创建第三个分支并执行merge -s ours是一种解决方案。

但你会找到所有"let's not advertised any "theirs" merging strategy" here

在用另一个分支工作替换你的工作之间,或者简单地摆脱当前的工作并将其完全替换为另一个 ,Junio C. Hamano(主要Git Maintainer)更喜欢第二种方法:

  

我认为“-s theirs”更糟糕。这就是你如何放弃你所做的事情(可能因为另一方有比你的黑客更好的解决方案),但这可以更容易和干净地完成:

$ git reset --hard origin/master
     

有些人可能会说“但是'merge -s theirs',我也可以保留我的所作所为”。重置只是放弃了我的所作所为。

     

这种逻辑也存在缺陷。你可以改为:

$ git branch i-was-stupid 
$ git reset --hard origin/master
     

如果你真的想记录你的失败。

     

与上述“重置为原产地,丢弃或搁置失败的历史记录”相比,“-s theirs”存在的一个大问题是您的“主要”历史记录,您的进一步开发将基于如果你做了“-s他们的”,那就永远保持你失败的垃圾。

     

希望随着时间的推移你会成为一个更好的程序员,你最终可能会有一些值得与你的主分支机构附近的世界分享的东西。然而,当发生这种情况时,你不能提供你的主分支被上游拉动,因为更广泛的世界根本不会对你先前的错误感兴趣。

答案 1 :(得分:8)

前几天遇到这个问题:

httpx://seanius.net/blog/2011/02/git-merge-s-theirs/

更新:旧网址已关闭。以下是Archive.org的Wayback Machine:

的文章
git merge -s ours ref-to-be-merged
git diff --binary ref-to-be-merged | git apply -R --index
git commit -F .git/COMMIT_EDITMSG --amend

答案 2 :(得分:2)

我自己倾向于git reset --hard BRANCHNAME选项,但我发现Git中有一个“他们的”(至少1.7.1版)。

如果要尝试,只需在merge命令中添加“-Xtheirs”参数即可。

例如,从master开始:

git checkout -b editBranch
-- edit your files --
git add .
git commit -m "Updated the files"
git checkout master
git merge -Xtheirs editBranch

如果您删除了editBranch中的任何文件,您将获得可以使用git rm FILENAME解决的合并conflit。

再一次,似乎重置 - 硬BRANCHNAME是更​​好的选择,但如果你有一个你真的需要他们的情况,这应该让你到那里。