在合并分支时,可能会发生冲突,我们应该解决这些冲突以完成合并。我们如何才能列出合并中已解决冲突的统计数据?
答案 0 :(得分:0)
TL; DR回答:试试。
分支在git中的成本为零,因此只需创建几个test_merge_source
和test_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 这个问题的答案实际上只是尝试,正如开头所指出的那样。