如何在合并提交中列出已解决冲突的统计信息?

时间:2016-07-18 13:24:20

标签: git merge statistics commit

在合并分支时,可能会发生冲突,我们应该解决这些冲突以完成合并。我们如何才能列出合并中已解决冲突的统计数据?

1 个答案:

答案 0 :(得分:0)

TL; DR回答:试试。

分支在git中的成本为零,因此只需创建几个test_merge_sourcetest_merge_destination分支并开始合并。 5-10分钟后你就完成了,或者你仍然有一些/一些/很多,因为发生了一些/一些/很多冲突,你可以选择完成/放弃合并尝试。

我很遗憾地向你提供否定答案,但你问题的前提基本上是有缺陷的,你所要求的是不可能的。

因为任何计算机算法都无法确定某些内容是否是冲突。是的,有些工具可以自动合并不同的文件,但即使是完美无故障的合并也可能构成冲突。

问题与询问版本之间更改的行数相同,这是一个同样不可能回答的问题。

 /* example1.c */
 #include <stdio.h>
-#include <varargs.h>
+#include <stdarg.h>
 ...
 /* In this diff one line is changed */


 /* example2.c */
 #include <stdio.h>
-#include <varargs.h>
+#include <math.h>
 ...
/* In this diff one line is removed and one line added */

如上所示,如果一行改变或完全取决于上下文。因此,没有(理智的)版本控制工具会尝试告诉您有多少行已更改,他们只会说添加/删除行。

现在,您可能会说您对失败的自动合并感兴趣,实际上并不是冲突。足够公平,但这完全取决于所使用的工具。 Git的内部合并处理例如会失败,如果修改了彼此相邻的两条线,而KDiff3则不会(这通常是你想要的,但这种错误的风险高于相距较远的线,所以是一种权衡)。

这意味着自动合并的内容不是静态的,可以随时间变化。那么你在寻找与最初合并代码时使用的git版本没有自动合并的内容,或者与今天的git新合并的结果是什么? 1

有一个git命令rerere,它将记录已解决的失败合并尝试,这可能会用于提取此类信息。但必须明确启用它,它会显着改变合并处理,它只是一个每个存储库设置,它只保留历史有限的时间,它可能被清除,所以它远远没有解决方案。

1 这个问题的答案实际上只是尝试,正如开头所指出的那样。