IntelliJ git 合并工具

Posted

技术标签:

【中文标题】IntelliJ git 合并工具【英文标题】:IntelliJ git merge tool 【发布时间】:2018-10-06 08:50:01 【问题描述】:

现在,当我尝试通过 IntelliJ 解决合并冲突时,我发现这些颜色 - 绿色、蓝色、灰色和红色,如下图所示:

如果我们通过终端执行 git merge ,似乎标记为 Green 、 Blue 和 Gray 的区域会由 Git merge 自动处理。只有 Git 需要我们意见的地方是红色标记的区域。

那么为什么 IntelliJ 合并工具会使我们的选择复杂化? 它应该只显示红色,不应该询问绿色、蓝色和灰色?

这是否意味着我们不能依赖 Git 算法来解析灰色、绿色和蓝色区域?到目前为止,在我使用 Git 的整个经验中,我看到人们盲目地信任 Git 合并,并且只尝试解决它显示的冲突部分——即红色区域?

【问题讨论】:

jetbrains.com/help/idea/file-status-highlights.html intellij 中的工具显示的不仅仅是冲突。 @AdamS,但合并工具实际上给了我们选择或取消选择这些区域的选项,除了红色之外,情况不应该如此。为什么要乱来?是不是让合并更加混乱的合并工具? 如果您在一个开发人员团队中工作并且必须解决合并冲突,有时您必须更改代码以使其与其他开发人员在您处理任务时所做的更改兼容.并非在所有情况下都希望推送添加和删除的代码 - 有时您希望编辑该代码以使其与您在解决合并冲突后所做的更改一起使用。因此,该工具可让您轻松查看所有最近的更改。 @AdamS ,更改代码是什么意思?只是选择和取消选择帅哥? (在此合并工具中,我们无法编辑大块)如果这是意图,则合并工具应该也提供编辑这些大块的选项,而不是我们再次进入代码文件并在那里编辑它们。 此合并工具确实有编辑合并结果的选项(中间窗格)。编辑两边的原始文本只会引起混乱。 【参考方案1】:

IntelliJ IDEA 的合并工具在工具栏中有“Apply non-conflicting changes”按钮,它会自动合并所有非红色块。这基本上相当于只查看 Git 命令行合并结果中的冲突。

IntelliJ IDEA 在打开对话框时没有自动执行此操作的原因不是因为 Git 的算法不可信,而是因为显示所有更改的块可以更容易地理解导致冲突的更改的上下文,并且以便更好地了解如何解决冲突。

而且 IntelliJ IDEA 确实可以对合并结果进行任意编辑 - 中间窗格是完全可编辑的。

【讨论】:

【参考方案2】:

似乎 Rubymine/Intellij 不关心 git diff3 配置。

git config --global merge.conflictstyle diff3

是的,自动冲突解决按钮很简洁,但是当我想要精确和简单时,我只需打开一个文本编辑器。 IDE 在合并时非常混乱,因为它显示的冲突多于实际。

【讨论】:

以上是关于IntelliJ git 合并工具的主要内容,如果未能解决你的问题,请参考以下文章

Intellij 正在合并两个同名文件夹

IntelliJ IDEA 下玩转 Git !#yyds干货盘点#

IntelliJ IDEA下的使用git

IntelliJ IDEA下的使用git

(转)IntelliJ IDEA下的使用git

使用intellij的idea集成开发工具中的git插件(转)