当我在存储库中运行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
提供未缩写的完整路径名,但它不会为您提供统计信息。)
答案 0 :(得分:2)
你可以尝试一下:
--relative[=<path>]
subdirectory
从项目的 {{1}} 运行时,可以告诉它排除目录外的更改并显示路径名使用此选项相对于它。当您不在子目录中时(例如在裸存储库中),您可以通过给出一个参数来命名哪个子目录使输出相对。
以下是两个截然不同的截图。
答案 1 :(得分:1)
您可以使用--relative
参数。
git log --stat --relative=xxx/toplevel/networking/services/cool_analysis
如果您已经在正确的目录中,则无需提供--relative
的路径。