Git合并他们:简单?

Dan*_*ark 20 git merge

我已经检查了各种问题.第一个提供了一个巨大的问题和答案(相关的?不确定),第二个提供了错误的答案作为最佳答案.

我有一个叫做的分支great-use-this.我有另一个叫做的分支master.我想合并great-use-this到master中,并避免自动合并冲突.

什么是做到这一点最简单和最简单的方法是什么?

注意:我实际上已经想到了这一点(使用第三个分支ours,但是无论如何这对SO来说会很好.

Von*_*onC 25

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

但是你会在这里发现所有"我们没有宣传任何"他们的"合并策略".

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

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

$ git reset --hard origin/master
Run Code Online (Sandbox Code Playgroud)

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

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

$ git branch i-was-stupid 
$ git reset --hard origin/master
Run Code Online (Sandbox Code Playgroud)

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

-s theirs与上述"重置为原点,丢弃或搁置失败的历史"相比,一个大问题是,如果你做了"你的进一步发展所依据的"主人"历史将永远保留你的失败废话" - 他们的".

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


小智 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
Run Code Online (Sandbox Code Playgroud)