可以告诉git在~/.gitconfig中使用空格吗? [英] Can git be told to use spaces in ~/.gitconfig?
问题描述
当我使用git config --global <some option> <some value>
时,Git会在我的~/.gitconfig
中写入相关条目,并以一个制表符缩进。由于my ~/.gitconfig
是受版本控制的,并且我希望它不会乱七八糟,因此我必须手动进入并用空格替换制表符。
向~/.gitconfig
添加条目时,是否可以告诉Git自动使用空格?
(请注意,这不是我用Git提交的代码中的缩进,而是Git自己的配置文件中的缩进。)
推荐答案
这就是对我起作用的方法(请注意,正如@rasjani在一条评论中指出的那样,在使用git config
时,没有阻止Git首先插入制表符的选项。)
创建筛选器
创建filter
,以便在对文件执行git add
操作后立即自动将制表符转换为空格。此筛选器由创建
git config --global filter.spacify.clean 'expand --tabs=4 --initial'
expand
命令表示convert each tab character at the beginning of line to 4 space characters
因此,筛选器的定义既包括做什么,也包括何时做(即针对哪个git操作)。
(在OSX上,您需要在安装coreutils后通过执行brew install coreutils
使用gexpand
)
当然,您需要决定上述配置的scope(--system
、--global
或默认--local
)。
指定将应用筛选器的文件/路径模式
例如,对于您的repository,创建一个.git/info/attributes
,内容如下:
.* filter=spacify
这表示apply the spacify filter to any files that match the pattern .*
在将这些文件提交到存储库之前。
请注意,上述操作只会影响要添加到存储库中的新文件。如果希望对所有现有文件执行此操作,则可以手动运行
expand
,或者让Git为我们执行此操作,如下所示:
git config --global filter.spacify.smudge 'expand --tabs=4 --initial'
git checkout HEAD -- **
对smudge
使用spacify
筛选器将导致将筛选器应用于正在签出的文件。签出后,您应该看到对点文件的一系列更改,这些文件将前导制表符转换为空格。重新提交这些文件,从今以后,smudge
和clean
二人组将使您的点文件无制表符!
更新--拉取请求!
这是您的回购请求:https://github.com/raxod502/radian/pull/156
这篇关于可以告诉git在~/.gitconfig中使用空格吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!