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

Git 如何在合并提交中列出已解决冲突的统计信息?,git,merge,statistics,commit,Git,Merge,Statistics,Commit,在合并分支时,可能会发生冲突,我们应该解决冲突以完成合并。如何在合并中只列出已解决冲突的统计信息?TL;博士回答:试试看。 分支在git中的成本为零,因此只需创建两个test\u merge\u source和test\u merge\u destination分支并开始合并。5-10分钟后,您要么完成了合并,要么还剩下一点/一些/很多,因为发生了一些/一些/许多冲突,您可以选择完成/放弃合并尝试 我很抱歉给你一个否定的答案,但是你的问题的前提是根本上有缺陷的,你所要求的是不可能的 因为任何计

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

TL;博士回答:试试看。

分支在git中的成本为零,因此只需创建两个
test\u merge\u source
test\u merge\u 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 */
/*示例1.c*/
#包括
-#包括
+#包括
...
/*在这个差异中,一行被改变了*/
/*例2.c*/
#包括
-#包括
+#包括
...
/*在此差异中,删除一行并添加一行*/
如上所示,行是否更改完全取决于上下文。因此,任何(正常的)版本控制工具都不会试图告诉您有多少行已更改,它们只会说添加/删除了行


现在,您可能会说您对失败的自动合并感兴趣,而实际上对冲突不感兴趣。这很公平,但这完全取决于所使用的工具。例如,如果相邻的两行被修改而不被修改,Git的内部合并处理将失败(这通常是您想要的,但与相距较远的行相比,错误的风险更高,因此需要权衡)

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

有一个git命令将记录已解决的失败合并尝试,它可能用于提取此类信息。但它必须被显式启用,它显著地改变了合并处理,它只是一个每个存储库的设置,它只在有限的时间内保留历史记录,并且可能会被清除,因此它远不是一个直接的解决方案


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

您所说的“我们如何才能只列出合并中已解决冲突的统计数据”是什么意思?请解释。假设您从分支X开始,从分支X创建了一个名为Y的新分支,并向其添加了两个名为C1和C2的提交。现在,如果您将分支Y合并回分支X(没有冲突),并查看合并提交中更改的统计信息,您将看到在提交C1和C2中所做更改的统计信息。但是,如果您在合并过程中遇到冲突并成功地解决了冲突,则合并提交的统计信息最后会包含为解决冲突而在提交C1、C2和提交中所做的更改。在后面的例子中,我想知道是否有办法只查看冲突提交的统计信息。如果您执行
git pull origin Y
,它将只执行一次提交(冲突提交)。如果执行git pull--no ff origin Y操作,它将与所有提交合并,包括冲突提交。好的,但我不打算合并分支,它以前已经合并过。我想知道它的冲突提交状态。
git diff--name only--diff filter=U