当我使用git show --no-prefix -U1000
时,结果将类似于:
-var a = 0;
+const a = 0;
no change
我想知道是否有一个选项可以在+
/ -
之后标识带有空格的行,例如:
- var a = 0;
+ const a = 0;
no change
我已经在https://git-scm.com/docs/git-show处检查了文档,但似乎没有。
答案 0 :(得分:0)
您可以通过脚本运行输出,如果第一个字符是空格,+或-,则会添加空格。
git diff HEAD^ | perl -pe 's{^([ +-])(.)}{$1 $2}'
还可以考虑使用git-difftool
来设置自己喜欢的差异查看程序。
答案 1 :(得分:0)
我不知道git show
的命令行标志在diff开头的单个+
或-
字符后插入空格(尽管您可以更改这些标志从2.22.0
到--output-indicator-new=<char>
或--output-indicator-old=<char>
以来,都是非常多的字符。
您可以做的是将输出通过管道传递到另一个程序(例如sed
),以“手动”插入空格(假设终端具有足够的颜色支持):
git show --color=always | sed 's/^\x1B\[3[12]m[+-]/& /'
请注意:
color=always
对于保留颜色代码是必需的。+
或-
字符之后插入空格,然后仅在颜色代码\x1B[32m
(绿色)或\x1B[31m
前加上空格(红)。这是为了避免在提交消息(理论上可以从--- a/foo
或{{1}开始)的摘要行中插入不必要的空格(即防止将- -- a/foo
更改为+
)。 })或在差异中间。为避免每次都键入此命令,可以将其定义为Git alias -
(在别名定义中注意前导my-show
字符,以将后续字符视为外部命令而不是Git子命令)。
!
然后调用git config --global alias.my-show "! git show --color=always | sed 's/^\x1B\[3[12]m[+-]/& /'"
以获得所需的输出。