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

时间:2018-07-17 09:31:25

标签: git merge-conflict-resolution git-merge-conflict beyondcompare4 three-way-merge

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

冲突非常复杂,以至于我无法在合并工具中解决冲突,因此必须手动解决(跨多个文件)。

理想情况下,我只想获取我的代码版本,查看“超越比较”中的冲突,并以此来建议我在Eclipse中所做的更改。

不起作用的东西:

  1. 如果我只是在Eclipse中打开冲突版本,则代码 无法编译,所以我失去了静态类型的所有用处 检查等。
  2. 如果我只是在Git(SourceTree)中“使用我们的/我的决定”,以便 可以在Eclipse中打开它,然后我丢失了所有不错的三向合并 我本可以用来解决冲突的信息。
  3. 使用母版对文件的HEAD版本进行幼稚的比较 版本也不能解决我的问题-差异太小 信息。我想获取三向信息。

我以错误的方式走这条路吗?我应该使用其他策略来解决冲突吗?在编辑文件的特定版本时,是否可以使用Git或BC4的功能单独保存冲突信息?

2 个答案:

答案 0 :(得分:1)

我发现某些可行的方法(受Stun Brick的建议启发):

开始合并,以便生成LOCAL,BASE和REMOTE文件。

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

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

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

在BC4中打开LOCAL,BASE和REMOTE文件。

现在,我可以在Eclipse中编辑自己喜欢的内容,而不会影响BC4显示的内容。

答案 1 :(得分:1)

个人而言,我将THEIRS版本复制到Eclipse中,然后从那里重新引入本地更改。如果您的MINE包含大量更改,或重构了大量代码,则最好从此开始。

这可以通过以下方式完成:

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

这应该使您可以从一个可用的MINE或THEIRS开始,逐个添加。

这将使您仍然可以使用来自BC的建议来对变化最大的文件进行处理。由于git一次仅打开一个文件夹的外部合并,因此如果您需要,则必须手动在BC中打开其他文件。

然后,您可以手动将每个文件标记为“已解决”。