显示使用git stats添加,修改和删除的行数

时间:2019-05-03 18:32:22

标签: git

我需要一个解决方案,向我显示从每个git commit添加,删除和修改的行数。对于git stats,它仅显示插入和删除,但不显示修改。我没有找到可能对这个问题有用的解决方案。

Example

1 个答案:

答案 0 :(得分:1)

这个问题出现在patch proposal in early 2018
菲利普·伍德(Philip Wood)尝试突出显示concept of "modified lines"
(他的patch made it here的简化版)

  

当修改一组行时,块包含删除和插入。
  为了正确地分阶段修改行的子集,我们需要将选定的缺失与选定的插入匹配,否则,我们最终得到的是缺失和上下文行,然后是我们不想要的插入。

up to be tricky结尾:

  

要实现分段修改的行,代码需要将每个删除的行与其替换配对。
  它通过将连续的选定行分组在一起来完成此操作,因此它具有组列表   删除行和插入行的另一个列表,然后将删除和插入通过列表中的索引配对。

菲利普开始怀疑:

  

我开始明白为什么我在编写此程序时尝试过的所有其他程序(tiggitggitkmercurial's version of add -i)都没有做任何尝试正确上演修改过的行,尽管我认为Git应该有一些方法。

Qit的主要维护者Junio C. Hamano通过this answer证实了这些疑问:

  

是的,这是一种功能,可以提出并实现某些功能,该功能对于一个人使用的某些有限情况非常有效,但在其他情况下则不行。
  而且,很难解释如何解决实现限制,这就是为什么我停在“拆分大块头”的原因?当我设计   原始的“增量添加”功能。

     

我认为很难的真正原因是“阶段修改行”中没有对“修改”的良好定义。
  更糟糕的是,没有机械地解决它的好方法,因为补丁只给您“已删除这些”和“已添加这些”,而没有给您“已删除块中的这一行对应于已添加的这两行”块”(即“原来的一行已在结果中修改为该东西”)。