可以告诉git在〜/ .gitconfig中使用空格吗?

Rad*_*ugh 12 git spaces indentation

当我使用时git config --global <some option> <some value>,Git会在我的相关条目中写入~/.gitconfig,缩进一个标签.由于~/.gitconfig是版本控制的,我希望它不会一团糟,然后我必须手动进入并用空格替换选项卡.

添加条目时,Git可以被告知自动使用空格~/.gitconfig吗?

(请注意,这不是我在Git中提交的代码中的缩进,而是Git自己的配置文件中的缩进.)

Ash*_*dal 6

这对我有用(请注意,正如@rasjani在评论中指出的那样,在使用时,没有任何选项可以防止 git首先插入选项卡git config。)


创建过滤器

创建一个文件后filter,便会自动将制表符自动转换为空格git add。此过滤器是由创建的

git config --global filter.spacify.clean 'expand --tabs=4 --initial'
Run Code Online (Sandbox Code Playgroud)

expand命令说,convert each tab character at the beginning of line to 4 space characters

因此,过滤器的定义既包括什么它和用于它确实它(即,对于该GIT中操作)。

(在OSX上,您需要gexpand 安装coreutils 之后使用来使用brew install coreutils

当然,你需要决定的范围--system--global或默认--local以上配置的)。


指定将应用过滤器的文件/路径模式

例如,对于您的存储库,创建.git/info/attributes具有以下内容的:

.* filter=spacify
Run Code Online (Sandbox Code Playgroud)

这表示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 -- **
Run Code Online (Sandbox Code Playgroud)

对使用spacify筛选器smudge将导致该筛选器应用于被检出的文件。签出后,您应该看到对点文件进行了大量更改,这些文件的前导制表符已转换为空格。重新提交这些文件,从此以后,smudgeand clean二人组将使您的dotfile保持无标签状态!


更新-拉请求!

这是您的回购请求请求:https : //github.com/raxod502/radian/pull/156