在git show / git diff中将tabwidth设置为4

在工作中,我们是几个开发人员,没有代码风格指南,有些开发人员缩进标签,还有一些其他人有4个空格(幸运的是没有空格缩进,人们使用不同于4个空格)。 一般来说,这不是(大)问题,因为在我们的编辑器中,我们设置了tabwidth=4 ,所有的缩进似乎都是正确的。

但是在git diff或者git show就是这样的:

 diff --git a/mesclatabs.php b/mesclatabs.php new file mode 100644 index 0000000..1986c91 --- /dev/null +++ b/mesclatabs.php @@ -0,0 +1,5 @@ +<?php +function foo() { + echo "line with 1 tab\n"; + echo "line with 4 spaces\n"; +} 

问题是git diffgit show每个标签显示的宽度为8个空格(实际上显示为一个标签,shell(在我的情况下为bash)显示的标签为8个空格,我想必须有一些bashconfiguration来改变这一点,但我想知道如果git有一个选项输出制表符作为diff / show 4个空格,因为一些开发人员使用zsh而不是bash

有任何想法吗?

我相信git config --global core.pager 'less -x1,5'

参考: git-scm chp7-1

作为答案https://stackoverflow.com/a/10584237/1850340不适合我,因为我的颜色设置,我想出了以下解决scheme:;

 TAB=$'\t' && git config --global core.pager "sed 's/$TAB/ /g' | less" && unset TAB 

这会用4个空格replace所有的制表符,然后用较less的显示。 (TAB解决方法是需要绕过壳反斜杠转义)