我想在我的.gitconfig中包含一个文件,它有我的github设置-这是可能的吗?
我可以这样做吗?
[core] include = /path/to/file
2012年更新:
参见迈克Morearty的回答:
通过将特殊的include.path变量设置为要包含的文件名,可以从另一个配置文件中包含一个配置文件 被包含的文件会立即展开,就好像它的内容已经在include指令的位置找到了一样 如果include.path变量的值是一个相对路径,则认为该路径相对于找到include指令的配置文件 include.path的值受波浪号扩展的影响:~/扩展为$HOME的值,~user/扩展为指定用户的主目录。< / p >
include.path
~/
$HOME
~user/
我不这么认为。
我宁愿把这个设置放在~/.gitconfig文件
~/.gitconfig
用户特定的配置文件。也称为“全局”配置文件。
bjeanes在注释中添加:
看起来每个人都错过了这个问题的重点 David显然想把他所有的点文件(bashrc, gemrc等)包括他的.gitconfig的回购,这样他就可以在他所有的机器上拥有他的所有设置 一种通过包含和忽略私有项来推送.gitconfig文件的部分的方法是他(和我,就此而言)所追求的
bashrc
gemrc
.gitconfig
一种可能的方法是使用涂抹/清洁过滤器驱动程序来解密/加密一个包含私有敏感信息的文件(参见这个线程),以完成一个像~/这样的本地文件。Gitconfig和与该文件相关的解密部分。
通过这种方式,您可以拥有一个包含所有dot文件的Git repo,再加上一个包含加密信息的文件,该文件将被解密并添加到所述dot文件中。
在.gitattributes(或.git/info/a..)中使用:
.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-based解决方案意味着,当然,你已经通过另一种方式将你的私钥/公钥传递到目标计算机上,你想通过克隆这个特殊的repo来恢复你所有的点文件)
实际上,在你的情况下,smudge脚本需要完成,因为它必须在解密该文件后,继续并将相关部分添加到全局~/.gitconfig文件(除非您可以用另一个位置覆盖全局配置文件)或其他点文件中。
https://kerneltrap.org/mailarchive/git/2008/3/13/1153274/thread (gpg的不便将在这个线程中进一步讨论) (这与完全加密的Git repo不同,如这里讨论)
我相信你可以使用Defunkt的枢纽工具来实现这一点。这是git命令的包装器,它允许你有GITHUB_USER和GITHUB_TOKEN环境变量。它将覆盖本地.gitconfig文件中的设置。
GITHUB_USER
GITHUB_TOKEN
然后,为了使它无缝,你指向的用户的别名alias git=hub在他的ZSH配置。然后,您应该能够获取一个本地文件,在其中设置环境变量,并将存储库与您的所有私有信息巧妙地推向公共世界。
alias git=hub
**注:对于OSX上的自制用户,您可以通过brew install hub安装该工具。
brew install hub
Git(1.7.10+)现在支持这个语法在.gitconfig:
[include] path = /path/to/file
参见在这里获取git更改及其边缘情况的详细描述。
顺便说一下,有几个细微之处值得指出:
不支持环境变量展开,例如$HOME。(~的扩展出现在Git 1.7.10.2中。)
~
[include]
[include] path = subdir/gitconfig
和subdir/gitconfig可以有:
subdir/gitconfig
[include] path = nested_subdir/gitconfig
... 这将导致subdir/nested_subdir/gitconfig被加载。
subdir/nested_subdir/gitconfig
如果git找不到目标文件,它会默默地忽略这个错误。这似乎是有意为之。
你可以从命令行加载它:
$ git config --local include.path "/path/to/.gitconfig"
如果你想从当前目录加载文件,使用"$PWD"/.gitconfig代替。
"$PWD"/.gitconfig
运行上述命令后,以下行被添加到你的.git/config文件中:
.git/config
[include] path = /path/to/.gitconfig