2

我跑git show --stat 2a340b71b280d60bbc29f8d8fe00b7da5760e2bb。我得到:

commit 2a340b71b280d60bbc29f8d8fe00b7da5760e2bb
Author: xxx <xxx@xxx.com>
Date:   Thu Apr 30 13:40:54 2020 +0200

    xxx

 xxx.c                                |    1 +

我跑git show --stat 2a340b71b280d60bbc29f8d8fe00b7da5760e2bb > git_show.txt。我得到:

$ cat git_show.txt
commit 2a340b71b280d60bbc29f8d8fe00b7da5760e2bb
Author: xxx <xxx@xxx.com>
Date:   Thu Apr 30 13:40:54 2020 +0200

    xxx

 xxx.c       |    1 +

即格式(间距)不同!非常意外。

问题在于,其中git_show.txt还有一些.../xxx/xxx.c | 1 +带有剪辑文件名的条目,这会阻止看到完整的文件名。

为什么会发生格式更改以及如何保留格式?

附言git version 2.8.0

4

1 回答 1

3

原因是当您将文本打印到标准输出时,Git 知道终端的列大小,并根据该值生成宽度。当您通过管道传输到文件时,Git 不会将您的终端附加到标准输出,因此它默认为 80 列。

如果要使用不同的宽度,可以将其指定为以下参数--stat

$ git show --stat=132 2a340b71b280d60bbc29f8d8fe00b7da5760e2bb > git_show.txt
# or, if your shell supports $COLUMNS:
$ git show --stat=$COLUMNS 2a340b71b280d60bbc29f8d8fe00b7da5760e2bb > git_show.txt

您可以提供其他参数;有关详细信息,请参阅git-diff(1)。请注意,这些选项在 2.8.0 中可能不可用;如果是这种情况,那么您需要升级以获得对此功能的支持。

于 2020-07-26T18:59:57.090 回答