81

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

但在git difforgit 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/中的 4 个空格show,因为一些开发人员使用zsh而不是bash.

有任何想法吗?

4

2 回答 2

122

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

参考:

于 2012-05-14T13:25:44.870 回答
3

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

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

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

于 2014-07-20T00:28:44.913 回答