Git合并策略'他们'不解决修改/删除冲突

时间:2014-08-11 23:33:13

标签: git

使用以下选项执行git merge时:

git merge -X theirs master

偶尔存在冲突的文件:

  

CONFLICT(修改/删除):在master中删除File_A.java并进行修改   在HEAD。 File_A.java的版本HEAD留在树中。

但是,我希望在这些情况下识别-X theirs选项,并使用更改的theirs版本,该版本用于删除。

是否有原因导致此类冲突无法自动解决,尤其是,因为我提供了一个特定的合并策略,建议它应该删除该文件?

此外,我如何(如果可能)更新merge命令以使用此类冲突的theirs版本?

3 个答案:

答案 0 :(得分:5)

看起来像theirs策略的recursive选项(这是您实际使用的,请参阅[1])不影响树合并,它仅用于两个文件修改时的文件内容合并只要。我真的不知道是否有任何合并命令选项可以做你想要的。您可以尝试创建一个扫描冲突文件的脚本(使用git status --porcelain),然后删除文件(git rm --force <file>)或获取其远程版本(git checkout --theirs <file>

[1] https://www.kernel.org/pub/software/scm/git/docs/git-merge.html#_merge_strategies

答案 1 :(得分:3)

有点晚了,但可能有用,您可以使用以下方法解决此类冲突:

git merge -X theirs master
git diff --name-only --diff-filter=U | xargs git rm

基本上,这意味着在解决冲突期间“删除所有未合并的文件”。

答案 2 :(得分:-1)

  

此外,如何(如果可能)我可以更新我的合并命令以使用他们的此类冲突版本?

您需要使用合并驱动程序 您需要在.gitattribute文件中创建自己的驱动程序和配置。

以下是可能对您有帮助的相关问题清单 每个人都以不同的角度附上这个问题