我想在我的.gitconfig中包含一个包含github设置的文件 - 这可能吗?
我可以这样做:
[core]
include = /path/to/file
答案 0 :(得分:272)
Git(1.7.10 +)现在supports .gitconfig
中的[include]
path = /path/to/file
:
$HOME
有关git更改及其边缘情况的详细说明,请参阅here。
顺便说一下,有几个细微之处值得指出:
环境变量扩展,例如~
,不受支持。 (扩展[include]
出现在Git 1.7.10.2中。)
如果指定了相对路径,则它相对于具有~/.gitconfig
语句的.gitconfig文件。即使在链式包含中,这也能正常工作 - 例如[include]
path = subdir/gitconfig
可以:
subdir/gitconfig
和[include]
path = nested_subdir/gitconfig
可以:
subdir/nested_subdir/gitconfig
...这将导致{{1}}被加载。
如果git找不到目标文件,它会默默地忽略该错误。这似乎是设计上的。
答案 1 :(得分:14)
2012年更新:
请参阅Mike Morearty的answer:
您可以通过将特殊的
include.path
变量设置为要包含的文件名来包含另一个配置文件。
包含的文件立即展开,就像在include指令的位置找到了它的内容一样 如果include.path
变量的值是相对路径,则该路径被认为是相对于找到include指令的配置文件。
include.path
的值受波形扩展影响:~/
扩展为$HOME
的值,~user/
扩展到指定用户的主目录。
我不这么认为。
我宁愿将该设置放在~/.gitconfig
file
特定于用户的配置文件。也称为“全局”配置文件。
这样,它就完成了.gitconfig项目特定的文件,而不是在推送到GitHub时发布。有关全局配置文件的更多信息,另请参阅此SO answer Git有3 config files。
bjeanes在评论中添加:
看起来每个人都错过了这个问题。
大卫显然想要推翻他所有点文件的回购(bashrc
,gemrc
等等。)包括他的.gitconfig
所以他可以在他的所有机器上完成所有设置。 /> 通过包含和忽略私人条目来推送.gitconfig
文件的一部分的方法是他(以及我,就此而言)所追求的。
一种可能的方法是使用smudge/clean filter driver解密/加密一个带有私有敏感信息的文件(参见this thread),以便用解密的方式完成像〜/ .gitconfig这样的本地文件与该文件相关的部分。
通过这种方式,你可以拥有一个包含所有点文件的Git仓库,以及一个带有加密信息的文件,用于解密并添加到所述点文件中。
在.gitattributes
(或.git/info/a..
)中使用:
myPrivateInfosFile filter=gpg diff=gpg
在你的repo .config文件中:
[filter "gpg"]
smudge = gpg -d -q --batch --no-tty
clean = gpg -ea -q --batch --no-tty -r C920A124
[diff "gpg"]
textconv = decrypt
(a GPG-based solution表示当然,您已将您的私钥/公钥通过其他方式传送到目标计算机上,您希望通过克隆此特殊仓库来恢复所有点文件。
实际上,在您的情况下,需要完成涂抹脚本,在解密该文件后,继续将相关部分添加到您的全局~/.gitconfig
文件(除非you overwrite the global config file with another location)或其他点文件。
https://kerneltrap.org/mailarchive/git/2008/3/13/1153274/thread (gpg的不便之处在this thread中进一步讨论) (这与完全加密的Git仓库不同,为discussed here)
答案 2 :(得分:7)
您可以从命令行加载它:
$ git config --local include.path "/path/to/.gitconfig"
如果要从当前目录加载文件,请使用"$PWD"/.gitconfig
。
运行上述命令后,以下行将添加到.git/config
文件中:
[include]
path = /path/to/.gitconfig
答案 3 :(得分:2)
我相信您可以使用defunkt's hub tool完成此操作。这是git命令的包装器,除其他外,它允许您拥有GITHUB_USER
和GITHUB_TOKEN
环境变量。这将覆盖本地.gitconfig
文件中的设置。
然后,在用户ZSH config中指向别名alias git=hub
的用户无缝。然后,您应该能够在您设置环境变量的地方找到一个本地文件,并将您的存储库推送到公共世界,并提供所有私人信息。
**对于OSX上的自制用户,您可以通过brew install hub
安装该工具。