是否有可能在你的.gitconfig中包含一个文件

我想在我的.gitconfig文件中包含我的github设置 – 这可能吗?

我可以做这样的事情吗?

[core] include = /path/to/file 

Git(1.7.10+)现在在.gitconfig 支持这个语法:

 [include] path = /path/to/file 

看到这里的git变化和边缘情况的详细描述。

顺便说一下,一些微妙的值得指出的是:

  1. 不支持环境variables扩展,例如$HOME 。 (扩展~出现在Git 1.7.10.2中)

  2. 如果指定了相对path,则相对于具有[include]语句的.gitconfig文件。 这个工作正确甚至跨链接包括 – 例如~/.gitconfig可以有:

     [include] path = subdir/gitconfig 

    subdir/gitconfig可以有:

     [include] path = nested_subdir/gitconfig 

    …会导致加载subdir/nested_subdir/gitconfig

  3. 如果git找不到目标文件,它会默默地忽略错误。 这似乎是devise。

2012年更新:

见Mike Morearty的回答 :

包括

您可以通过将特殊的include.pathvariables设置为要包含的文件的名称来包含另一个configuration文件。
包含的文件立即展开,就好像其内容已经在include指令的位置find一样。
如果include.pathvariables的值是相对path,则该path被认为是相对于在其中findinclude指令的configuration文件。
include.path的值受波形扩展的影响: ~/扩展为$HOME的值, include.path ~/扩展到指定用户的主目录。


我不这么认为。

我宁愿把这个设置放在~/.gitconfig文件中

用户特定的configuration文件。 也称为“全局”configuration文件。

这样,它完成了.gitconfig项目特定的文件,而不必在推送到GitHub时发布。 关于全局configuration文件的更多信息,另请参阅这个答案 。
Git有3个configuration文件 。


bjeanes补充说:

看起来大家都错过了这个问题的重点。
David显然希望推高所有点文件( bashrcgemrc等)的回购,包括他的.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文件 )或其他这个问题的点文件。

https://kerneltrap.org/mailarchive/git/2008/3/13/1153274/thread(gpg不便之处,在这个主题中有进一步的讨论)(这里有一个完全encryption的Git仓库,; 这里讨论的不同 )

您可以从命令行加载它:

 $ git config --local include.path "/path/to/.gitconfig" 

如果要从当前目录加载文件,请改为使用"$PWD"/.gitconfig

在运行上面的命令之后,将下面的行添加到.git/config文件中:

 [include] path = /path/to/.gitconfig 

我相信你可以使用defunkt的集线器工具来完成这个工作。 这是git命令的一个包装器,它可以让你拥有GITHUB_USERGITHUB_TOKEN环境variables。 这将覆盖本地.gitconfig文件中的设置。

然后,使用户在ZSHconfiguration中指向别名alias git=hub 。 您应该能够在设置您的环境variables的地方获取本地文件,并将您的存储库推向公共领域,使您的所有私人信息都可以实现。

**注意OSX上的自制用户,您可以通过brew install hub来安装该工具。