是否有可能在你的.gitconfig中包含一个文件
我想在我的.gitconfig文件中包含我的github设置 – 这可能吗?
我可以做这样的事情吗?
[core] include = /path/to/file
Git(1.7.10+)现在在.gitconfig
支持这个语法:
[include] path = /path/to/file
看到这里的git变化和边缘情况的详细描述。
顺便说一下,一些微妙的值得指出的是:
-
不支持环境variables扩展,例如
$HOME
。 (扩展~
出现在Git 1.7.10.2中) -
如果指定了相对path,则相对于具有
[include]
语句的.gitconfig文件。 这个工作正确甚至跨链接包括 – 例如~/.gitconfig
可以有:[include] path = subdir/gitconfig
和
subdir/gitconfig
可以有:[include] path = nested_subdir/gitconfig
…会导致加载
subdir/nested_subdir/gitconfig
。 -
如果git找不到目标文件,它会默默地忽略错误。 这似乎是devise。
2012年更新:
见Mike Morearty的回答 :
包括
您可以通过将特殊的
include.path
variables设置为要包含的文件的名称来包含另一个configuration文件。
包含的文件立即展开,就好像其内容已经在include指令的位置find一样。
如果include.path
variables的值是相对path,则该path被认为是相对于在其中findinclude指令的configuration文件。
include.path
的值受波形扩展的影响:~/
扩展为$HOME
的值,include.path
~/
扩展到指定用户的主目录。
我不这么认为。
我宁愿把这个设置放在~/.gitconfig
文件中
用户特定的configuration文件。 也称为“全局”configuration文件。
这样,它完成了.gitconfig项目特定的文件,而不必在推送到GitHub时发布。 关于全局configuration文件的更多信息,另请参阅这个答案 。
Git有3个configuration文件 。
bjeanes补充说:
看起来大家都错过了这个问题的重点。
David显然希望推高所有点文件(bashrc
,gemrc
等)的回购,包括他的.gitconfig
这样他可以在他所有的机器上拥有所有的设置。
通过包含和忽略私人条目来推送.gitconfig
文件的一部分是他(和我,就此而言)所追求的。
一个可能的方法是使用一个涂抹/干净的filter驱动程序来解密/encryption一个文件与私人敏感信息(见这个线程 ),以完成一个本地文件,如〜/ .gitconfig与解密部分是相关的文件。
这样,你可以有一个Git仓库所有的点文件,加上一个encryption信息的文件意味着解密和添加到所述点文件。
在.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
(基于GPG的解决scheme意味着,当然,您已经通过其他手段将您的私钥/公钥传送到目标计算机上,通过克隆此特殊回购来恢复所有点文件)
实际上,在你的情况下,需要完成涂抹脚本,必须在解密该文件之后,继续添加相关部分到你的全局~/.gitconfig
文件(除非用其他位置覆盖全局configuration文件 )或其他这个问题的点文件。
您可以从命令行加载它:
$ git config --local include.path "/path/to/.gitconfig"
如果要从当前目录加载文件,请改为使用"$PWD"/.gitconfig
。
在运行上面的命令之后,将下面的行添加到.git/config
文件中:
[include] path = /path/to/.gitconfig
我相信你可以使用defunkt的集线器工具来完成这个工作。 这是git命令的一个包装器,它可以让你拥有GITHUB_USER
和GITHUB_TOKEN
环境variables。 这将覆盖本地.gitconfig
文件中的设置。
然后,使用户在ZSHconfiguration中指向别名alias git=hub
。 您应该能够在设置您的环境variables的地方获取本地文件,并将您的存储库推向公共领域,使您的所有私人信息都可以实现。
**注意OSX上的自制用户,您可以通过brew install hub
来安装该工具。