【问题标题】:Git merge strategy 'theirs' is not resolving modify/delete conflictGit合并策略“他们的”没有解决修改/删除冲突
【发布时间】:2014-08-11 23:33:13
【问题描述】:

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

git merge -X theirs master

偶尔会有这样的冲突文件:

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

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

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

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

【问题讨论】:

标签: git


【解决方案1】:

有点晚但可能有用,您可以通过以下方式解决此类冲突:

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

基本上是指在冲突解决过程中“删除所有未合并的文件”。

【讨论】:

    【解决方案2】:

    貌似recursive策略的theirs选项(这是你实际使用的,见[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

    【讨论】:

      【解决方案3】:

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

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


      以下是相关问题的列表,可能对您有所帮助。
      每个人都以不同的角度附上这个问题

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-08
        • 1970-01-01
        • 1970-01-01
        • 2012-05-09
        • 2015-10-15
        • 2012-03-04
        相关资源
        最近更新 更多