如何在.gitconfig中设置多个`core.excludesfile`?


13

我同步~/.gitconfig,并~/.gitignore通过使用Dropbox和符号链接创建为它在Ubuntu和Mac文件。

并且这样excludesfile声明。

[core]
        editor = /usr/bin/vim
        excludesfile = /Users/username/.gitignore

问题是主目录因操作系统而异,因此我需要对excludesfile进行多个设置。

是否可以定义多个core.excludesfile

Answers:


17

你只能有一个core.excludesfile; 最后一个设置是使用的设置。但是,您不需要多个文件:git支持~作为主目录的缩写。

[core]
    excludesfile = ~/.gitignore

通常,如果确实需要多个排除文件,则最简单的解决方案是生成一个由其他文件串联而成的文件,并在其中一个文件发生更改时对其进行更新。


.gitconfig实际上受git的版本控制。不幸的是,git扩展~为完整路径,$HOME.gitconfig使用绝对路径更新自身。该行为很好,但是随后显示为未分段的更改,因此我通常git update-index --assume-unchanged .gitconfig忽略扩展(以及文件的其余部分)。
Dolph

2
@Dolph status-norepro您做了什么使~之扩展?我得到:git config --global core.excludesfile '~/.gitignore'; git config --global core.excludesfile~/.gitignore(git 1.7.9.5)
别再作恶了'

1
@Dolph最有可能是外壳扩展;毕竟,如果您这样做git config --global core.excludesfile ~/.gitignore,则实际运行的是git config --global core.excludesfile /path/to/home/.gitignore
Radon Rosborough

1
@Gilles,还请注意,对于git-scm,将~/.config/git/ignore自动全局忽略该文件(如果存在),而无需进行全局配置。
Acumenus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.