从git log --stat的输出中缩写路径名前缀

时间:2016-02-22 23:19:12

标签: git git-log

当我在存储库中运行git log --stat时,大多数更改发生在层次结构深处的同一子树中,我可能会得到这样的结果:

$ git log --stat
commit xxxxxxx
Author: xxx
Date:   xxx

    commit message

.../toplevel/networking/services/cool_analysis/Makefile    |  10 ++
.../networking/services/cool_analysis/cool_analysis_main.c | 209 +++............
.../subdirectory/util/cool_analysis_helper.c               | 112 +++.......

其中所有内容共享公共前缀xxx/toplevel/networking/services/cool_analysis(而subdirectory是runder),但git log --stat的输出使得很难识别这一事实,因为路径名前缀的数量不同缩写。相反,我想要这样的事情:

$ git log --stat --strip=xxx/toplevel/networking/services/cool_analysis
commit xxxxxxx
Author: xxx
Date:   xxx

    commit message

.../Makefile                                 |  10 ++
.../cool_analysis_main.c                     | 209 +++............
.../subdirectory/util/cool_analysis_helper.c | 112 +++.......

有没有办法得到这个?手册似乎没有关于它的任何内容,并且用sed或其他东西对输出进行后处理很难,因为路径名已经缩写。 (git log --name-only提供未缩写的完整路径名,但它不会为您提供统计信息。)

2 个答案:

答案 0 :(得分:2)

你可以尝试一下:

--relative[=<path>]
  

subdirectory

     

从项目的 {{1}} 运行时,可以告诉它排除目录外的更改并显示路径名使用此选项相对于它。当您不在子目录中时(例如在裸存储库中),您可以通过给出一个参数来命名哪个子目录使输出相对。

以下是两个截然不同的截图。

enter image description here

enter image description here

答案 1 :(得分:1)

您可以使用--relative参数。

git log --stat --relative=xxx/toplevel/networking/services/cool_analysis

如果您已经在正确的目录中,则无需提供--relative的路径。