我想用
git config core.whitespace tab-in-indent,tabwidth=4
我想对c ++文件进行这些设置,以便在使用git diff时出现错误缩进时会收到警告。但是,我还有需要制表符的Makefile。有没有办法为不同的文件配置不同的空格设置?
答案 0 :(得分:8)
您可以使用gitattributes
调整这些设置。这是我的.gitattributes文件的片段:
*.c text diff=cpp whitespace=trailing-space,space-before-tab,tab-in-indent
*.cpp text diff=cpp whitespace=trailing-space,space-before-tab,tab-in-indent
*.h text diff=cpp whitespace=trailing-space,space-before-tab,tab-in-indent
*.hpp text diff=cpp whitespace=trailing-space,space-before-tab,tab-in-indent
*.py text diff=python whitespace=trailing-space,space-before-tab,tab-in-indent
*.tex text diff=tex whitespace=trailing-space,space-before-tab,tab-in-indent
*.java text diff=java whitespace=trailing-space,space-before-tab,tab-in-indent
*.pl text diff=perl whitespace=trailing-space,space-before-tab,tab-in-indent
*.php text diff=php whitespace=trailing-space,space-before-tab,tab-in-indent
*.rb text diff=ruby whitespace=trailing-space,space-before-tab,tab-in-indent
*.vcproj eol=crlf
*.dsp eol=crlf
*.dsw eol=crlf
*.sh eol=lf
*.jpg binary
*.png binary
*.gif binary
*.tiff binary
要调整空白设置,您可以使用以下内容:
*.ext whitespace=tab-in-indent,tabwidth=4
*.ext
可以指向路径,包含globs等。这是非常灵活的机制。
答案 1 :(得分:1)
正如jszakmeister从我的评论中更新,这里只是你所询问的一个小节。
请注意'makefile-ish'条目中-
修饰符的使用,表示不要将tab-in-indent称为错误。
makefile text whitespace=-tab-in-indent,trailing-space,tabwidth=4
Makefile text whitespace=-tab-in-indent,trailing-space,tabwidth=4
*.mk text whitespace=-tab-in-indent,trailing-space,tabwidth=4
*.cpp text diff=cpp whitespace=tab-in-indent,trailing-space,tabwidth=4
*.hpp text diff=cpp whitespace=tab-in-indent,trailing-space,tabwidth=4
答案 2 :(得分:1)
John Szakmeister和UpAndAdam的答案中有一些补充。
要设置特定于文件的规则,您必须在项目的根目录中添加一个.gitattributes
文件。 docs
(如果您不希望对其进行版本控制,则可以将其添加为:.git/info/attributes
。)
# Macro's
[attr]cpp diff=cpp whitespace=trailing-space,space-before-tab,indent-with-non-tab,tabwidth=4
[attr]makefile whitespace=trailing-space,indent-with-non-tab,space-before-tab,tabwidth=4
*.[ch] cpp
*.[ch]pp cpp
makefile makefile
s.makefile makefile
*
匹配所有内容,而[ch]
匹配两个字符c
和h
。 whitespace
选项列出了需要警告的内容。
tabwidth
选项中设置whitespace
用于确定何时以及如何替换制表符和空格字符。 (默认值为8个字符。)tab-indent
认为使用制表符的缩进是错误的。 indent-with-non-tab
在一行的开头使用4个或更多空格时会在此发出警告。请注意,可以缩进3个空格!space-before-tab
可以捕获选项卡之前和之间隐藏的空间。diff=cpp
为C和C ++文件启用了更智能的差异。trailing-space
在行尾和文件尾警告空白字符。.gitattributes
中的哪些规则,请使用:git check-attr --all -- <pathname>
<pathname>
不必是现有文件。 (即some.cpp
有效)
whitespace
规则:git diff
。trailing space
trailing tab
2 spaces
4 spaces
tab
tab and space
space and tab
tab, space, tab
调用git diff
时会标记问题,调用git -apply ---whitespace=[warn|error|fix]
时会检查/修复问题。
使用以下命令配置git apply
的默认行为:
git config --[global|local] apply.whitespace [warn|error|fix]