使用以下选项执行git merge
时:
git merge -X theirs master
偶尔存在冲突的文件:
CONFLICT(修改/删除):在master中删除File_A.java并进行修改 在HEAD。 File_A.java的版本HEAD留在树中。
但是,我希望在这些情况下识别-X theirs
选项,并使用更改的theirs
版本,该版本用于删除。
是否有原因导致此类冲突无法自动解决,尤其是,因为我提供了一个特定的合并策略,建议它应该删除该文件?
此外,我如何(如果可能)更新merge
命令以使用此类冲突的theirs
版本?
答案 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
文件中创建自己的驱动程序和配置。
以下是可能对您有帮助的相关问题清单 每个人都以不同的角度附上这个问题