如何在git中手动解决冲突(github,某些应用,IntelliJ)

时间:2013-01-24 14:13:40

标签: git github branching-and-merging merge-conflict-resolution

就我而言,手动解决的冲突是最大的错误来源之一。

目前,我们正在解决在一台显示器前大声收集的冲突,我认为这是石器时代的做法。此外,在保存和关闭视觉差异工具之后,如果我们想要仔细检查或修复某些内容,我们以后就无法返回到冲突视图。

我正在寻找一种快速查看git中所有最新手动解决冲突的方法。

我希望看到每个冲突的A分支,B分支和结果代码。

我可以手动为desided工具提供提交编号,或者我可以在列表中看到冲突。


Offtopic:

我的好主意是在发生冲突时引入合并审查。负责该部分代码(在两个分支中)的所有开发人员都应该检查冲突,尤其是当他们远程工作时。在双方确认后才能合并?

3 个答案:

答案 0 :(得分:2)

我觉得通过改变工作流程也许可以避免这些“大喊大叫”。假设开发人员正在开发一个主题分支,他就落后于master

A--B--C--D--E--F
       \
        X--Y--Z

而不是他或小组提出合并提交,他可以将他的更改改为他的本地master

 A--B--C--D--E--F
                 \
                  X'--Y'--Z'

然后,当时机成熟时,它将允许对“官方”主人的清洁合并提交

A--B--C--D--E--F--X'--Y'--Z'

ref

答案 1 :(得分:2)

使用git非常容易:

git log --patch -c -1 YOURMERGE

这将输出如下内容:

index ea575f9,b943345..239a586
--- a/file-with-conflicts.txt
+++ b/file-with-conflicts.txt
@@@ -1,1 -1,1 +1,1 @@@
- Version A
 -Version B
++Merge Resolution

答案 2 :(得分:0)

来自git help log页面:

git log --patch -c -1 <commit-id>

  

-c        使用此选项,合并提交的diff输出显示每个父项与合并结果的差异   同时而不是在父母和父母之间显示成对差异   结果一到        一时间此外,它仅列出了从所有父母修改过的文件。

     

-p,-u, - patch       生成补丁(请参阅生成补丁的部分)。