将选项卡宽设置为4 in git show/git diff

在工作中,我们有几个开发人员,没有代码样式指南,一些开发人员使用制表符缩进,一些开发人员使用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个空格。我想一定有一些 bash 配置来改变这一点,但是我想知道 git 是否可以在 diff/show中将制表符输出为4个空格,因为有些开发人员使用的是 zsh而不是 bash

有什么想法吗?

14977 次浏览

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

参考文献:

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

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

这将在显示所有制表符之前用4个空格替换它们。 (需要 TAB 解决方案来规避 shell 反斜杠转义)