我注意到如果你这样做
$ git diff -M --stat
out_of_the_water/out_of_itself => he_watches_my_gauze_dress/blowing_on_the_line | 0
1 file changed, 0 insertions(+), 0 deletions(-)
或
$ git diff -M --stat | cat
.../out_of_itself => he_watches_my_gauze_dress/blowing_on_the_line | 0
1 file changed, 0 insertions(+), 0 deletions(-)
输出不同,第一个文件名被截断。这对我来说是一个问题,因为我想隔离两个文件名:
$ git diff -M head~1 --stat | perl -ne 'print "$1 $2" if m/^\s*(.*?) => (.*?) \|/'
如何配置 git 以在通过管道传输到另一个进程时提供相同的输出?
我很想说 RTFM,但为了您的利益,我将在这里引用相关部分:
--stat[=
[, [, ]]] 生成差异统计。默认情况下,所需的空间将用于文件名部分,其余空间用于图形部分。最大宽度默认为终端宽度,如果未连接到终端则为 80 列,并且可以通过
覆盖。文件名部分的宽度可以通过在逗号后指定另一个宽度<width>
来限制。图形部分的宽度可以通过使用<name-width>
(影响生成统计图的所有命令)或通过设置--stat-graph-width=<width>
(不影响diff.statGraphWidth=<width>
)来限制。通过提供第三个参数git format-patch
,您可以将输出限制为前<count>
行,如果还有更多,则接着是<count>
。...
这些参数也可以通过
、--stat-width=<width>
和--stat-name-width=<name-width>
单独设置。--stat-count=<count>
所以如果没有管道,宽度就是你的终端宽度,比80个字符宽;对于管道,没有终端宽度,因此宽度为 80。因此只需使用
--stat=99999
,就不会缩写任何内容。