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

时间:2012-05-14 09:57:57

标签: git bash tabs whitespace spaces

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

但在git diffgit 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个空格。我想必须有一些bash配置来改变它,但是我想知道git是否有选项可以在diff / show中输出标签为4个空格,因为一些开发人员正在工作使用zsh代替bash

有什么想法吗?

2 个答案:

答案 0 :(得分:98)

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

参考文献:

答案 1 :(得分:3)

由于我的颜色设置,答案https://stackoverflow.com/a/10584237/1850340对我不起作用,我提出了以下解决方案:

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

这会将所有制表符替换为4个空格,然后再将其显示为less。 (需要TAB解决方法来规避shell反斜杠转义)