【问题标题】:Tool to resolve multiple merge conflicts in git using either "mine" or "theirs"使用“我的”或“他们的”解决 git 中的多个合并冲突的工具
【发布时间】:2016-01-23 22:53:54
【问题描述】:

我有一种情况,我正在合并在 git 中具有多个二进制文件的变更集。我总是使用“我的”或“他们的”来解决更改。在我的大部分日常操作中,我一直在使用 TortoiseGit,但是合并冲突对话框虽然允许多选,但不允许多个“使用他们的解决”。它一次只能解析一个文件。

是否有可以用于这种特定情况的工具(选择 100 多个文件并使用他们的解决)?

【问题讨论】:

  • 因为对于二进制文件,您可能正在获取整个文件(而不是选定的部分),您可以简单地从命令行运行git checkout MERGE_HEAD -- path1 path2 ... pathN。不是你想要的,它不是 GUI... :-)
  • 输入所有这些路径所花费的时间与使用 tortoisegit 一个一个地解析它们一样长。
  • 不一定。如果可以创建查找表达式,可能就像find <your expression> -print0 | xargs -0 git checkout MERGE_HEAD -- 一样简单。
  • 想过要向 tortoisegit 报告吗? tortoisegit.org/issues
  • TortoiseGit 已经报告了该问题。

标签: git tortoisegit


【解决方案1】:

如果您能够使用git 命令行程序,您可以指定ourstheirs 选项到recursive 合并策略以解决所有 冲突,方法是选择“我们的”变化或“他们的”变化。

git merge -s recursive -X ours other-branch
# or
git merge -s recursive -X theirs other-branch

recursive 合并策略是默认的,因此您可能不必包含 -s recursive;它包含在上面是为了完整性。)

完整解释见git-merge documentation

递归策略可以采用以下选项:

我们的

此选项通过支持 我们的 版本来强制自动解决冲突的块。与其他树不同的变化 与我方的冲突反映到合并结果上。对于二进制 文件,全部内容均来自我们这边。

这不应与 ours 合并策略混淆,后者甚至根本不查看其他树包含的内容。它丢弃 另一棵树所做的一切,声明我们的历史包含所有 发生在里面。

他们的

这与我们的相反。

【讨论】:

    【解决方案2】:

    图形错觉

    事实上,我在 TortoiseGit 中也遇到过同样的问题。它似乎更像是一个缓存故障,而不是一个真正的错误。冲突仍然出现在冲突窗口中,但在磁盘上它们已解决。

    为了更新冲突窗口,只需杀死在您计算机上某处运行的 TortoiseGitCache.exe 并在下次检查冲突时:Tada!

    检查的版本:1.8.16.0(Windows 8.1 / 64 位)

    注意:如果你直接在 git 命令行中解决,然后再用 Tortoise 检查缓存,你会遇到同样的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 2014-04-27
      • 2018-08-04
      • 2018-06-15
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多