在保留 3 向合并信息的同时解决 IDE 中的合并冲突

Resolving Merge Conflict in IDE Whilst Retaining 3-Way Merge Info

(我使用 SourceTree 作为我的 Git 工具,使用 Beyond Compare 来解决合并冲突,使用 Eclipse 作为我的 Java IDE。)

冲突很复杂,我无法在合并工具中解决,必须手动解决(跨多个文件)。

理想情况下,我只想使用我的代码版本,查看 Beyond Compare 中的冲突,并用它来建议我在 Eclipse 中的更改。

不起作用的东西:

  1. 如果我只是在Eclipse中打开冲突的版本,那么代码 不编译,所以我失去了静态类型的所有用处 检查等
  2. 如果我只是 "resolve using ours/mine" 在 Git (SourceTree) 这样我 可以在 Eclipse 中打开它,然后我失去了所有漂亮的三路合并 我本可以用来解决冲突的信息。
  3. 与 master 对文件的 HEAD 版本进行简单的比较 版本也不能解决我的问题——差异太小 信息。我要三路信息

我是不是用错了方法?我应该使用不同的策略来解决冲突吗?在编辑文件的特定版本时,是否可以使用 Git 或 BC4 的功能来单独保存冲突信息?

我发现一些有用的东西(灵感来自 Stun Brick 的建议):

开始合并,生成LOCAL、BASE、REMOTE文件。

将这些文件移出到一个单独的目录中。

通过获取本地副本解决合并(在 SourceTree 中:解决冲突 -> 使用我的解决。在 Git 中:git checkout --ours PATH/FILE)。

在Eclipse中打开文件的本地版本。

打开 BC4 中的 LOCAL、BASE 和 REMOTE 文件。

现在我可以在 Eclipse 中随心所欲地进行编辑,而不会影响 BC4 显示的内容。

就个人而言,我会将 THEIRS 版本复制到 Eclipse 中,然后从那里重新引入本地更改。如果您的 MINE 包含明显更多的更改,或者重构了大量代码,那么从它开始可能会更好。

可以这样做:

  1. 在 Eclipse 中打开正在进行的合并文件(带有愚蠢的合并标签)
  2. 在 Eclipse 中查看 THEIRS 提交,(使用 git 插件),
  3. 打开文件的特定提交版本(无合并标签)
  4. 正在复制所有内容。
  5. 同时打开 MINE 提交的版本并重新引入您的更改,手动继续合并。

这应该允许您从一个工作的矿山或他们的矿山开始,一点一点地添加到它。

这将允许您仍然使用 BC 对更改最显着的文件的建议。由于 git 一次只打开一个文件夹的外部合并,如果您觉得需要,您必须在 BC 中手动打开其他文件。

然后您可以手动将每个文件标记为 "resolved"。