管道传输时如何配置 git 输出?

问题描述 投票:0回答:1

我注意到如果你这样做

$ 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 以在通过管道传输到另一个进程时提供相同的输出?

git bash pipe
1个回答
2
投票

我很想说 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
,就不会缩写任何内容。

© www.soinside.com 2019 - 2024. All rights reserved.