有没有添加git显示行,更改行和删除行的方法?

“git diff –stat”和“git log –stat”显示如下内容:

$ git diff -C --stat HEAD c9af3e6136e8aec1f79368c2a6164e56bf7a7e07 app/controllers/application_controller.rb | 34 +++------------------------- 1 files changed, 4 insertions(+), 30 deletions(-) 

但是这个提交中真正发生的事情是,4行被改变,26行被删除,这与添加4行和删除30行不同。

有没有办法获得三angular洲LOCs(在这种情况下26)? 我并不在意区分添加或删除的行。

您可以使用:

 git diff --numstat 

得到数字差异信息。

至于从一个添加和删除对分离修改, --word-diff可能会有所帮助。 你可以尝试这样的事情:

 MOD_PATTERN='^.+(\[-|\{\+).*$' ADD_PATTERN='^\{\+.*\+\}$' REM_PATTERN='^\[-.*-\]$' git diff --word-diff --unified=0 | sed -nr \ -e "s/$MOD_PATTERN/modified/p" \ -e "s/$ADD_PATTERN/added/p" \ -e "s/$REM_PATTERN/removed/p" \ | sort | uniq -c 

这有点啰嗦,所以你可能想用自己的脚本parsing它。

  1. 如果你想知道使用id commit-id提交的行添加/更改/删除,你可以使用

     git show commit-id --stat 

    要么

     git diff commit-id-before commit-id --stat 
  2. 如果你知道范围提交添加/更改/删除的行,你可以使用

     git diff commit-id1 commit-id2 --stat 
  3. 如果你想知道每个提交添加/更改/删除的行,你可以使用

     git log --stat 

git使用“统一”比较,只有添加和删除行,作为比较格式。 你必须做一些外部的事情来获得显示添加,删除和更改信息的差异。

https://wiki.postgresql.org/wiki/Working_with_Git#Context_diffs_with_Git提供了一个脚本的链接,允许运行常规的“差异”; – 从而可以生成一个“上下文”差异输出。 上下文diff会显示添加,删除和更改的行,这应该允许您获取所需的数据。