假设我有一个包含此内容的文件master:
Line 1
Line 2
Line 3
Line 4
Run Code Online (Sandbox Code Playgroud)
现在说我创建并签出一个名为的新分支test.在这个分支中,我将文件更改为:
Line 1
Line 2
Line 3 Modified
Line 4
Run Code Online (Sandbox Code Playgroud)
我提交了这个并切换回来master.在master中我将文件更改为:
Line 1
Line 2
Line 3
Line 4 Modified
Run Code Online (Sandbox Code Playgroud)
我承诺 现在,如果我合并分支test到master,我遇到冲突.
为什么不能使用共同的祖先git自动解决这个问题?如果我告诉git使用BeyondCompare作为difftool编辑冲突,BeyondCompare甚至不会告诉用户自动解决这个问题,因为这不是真正的冲突.有没有办法让git自动解决这些问题?我已经尝试过recursive并resolve合并策略,但都没有.
这是我们公司的一个问题,因为有些文件中有多个开发人员在近距离内更换线路,这会导致许多不必要的冲突.
del*_*rux 13
Git 行为如此的原因在这个问题的答案中得到了很好的解释:
本质上,因为您需要相邻的行来为更改提供上下文(您不能只使用行号,因为上面可能已添加或删除了某些内容),如果它周围的行发生了更改,您通常不希望 Git只是天真地继续合并。用户 Arsen7 在该线程中给出了一个很好的例子,说明这可能会如何严重错误。
但是,我同意您的看法,有时这很烦人,因此我编写了一个自定义合并驱动程序,可以在合并/重新定位期间解决此类冲突。它被设计为交互式的,因为我总是想在继续之前检查它是否会做正确的事情,但是如果您确信它会起作用,您可以轻松地将其修改为不正确。
如果您有兴趣,可以在 GPLv3+ 许可下在 GitHub 上获得该脚本:
https://github.com/paulaltin/git-subline-merge
我偶然发现了同样的问题,来自 SVN 我也发现这很奇怪。
我没有答案,但也许这有帮助:
我使用另一个合并工具(取决于您正在使用的操作系统),我使用 meld diff 来解决合并冲突(我在 linux / ubuntu 上工作)。
您也可以将 git 设置为使用此外部合并应用程序......
和谷歌搜索“使用 meld for git”
例如http://meldmerge.org/help/resolving-conflicts.html
| 归档时间: |
|
| 查看次数: |
968 次 |
| 最近记录: |