当我使用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上,通过执行gexpand在安装coreutils之后,您需要使用brew install coreutils)

当然,您需要确定上述配置的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 -- **

spacify使用smudge过滤器将导致该过滤器应用于被 check out 的文件。 checkout 后,您应该看到对点文件的一堆更改,这些文件的前导制表符已转换为空格。重新提交这些文件,从此以后,smudgeclean二重奏将使您的dotfile保持无标签状态!

更新- pull 请求!

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

关于git - 可以告诉git在〜/.gitconfig中使用空格吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40091541/

10-14 16:55
查看更多