我想在.gitconfig文件中包含一个具有github设置的文件-这可能吗?
我可以做这样的事情:
[core]
include = /path/to/file
~/.gitconfig
)中,即不会被推送到您的github存储库中。键入' git config
'时,您会看到3配置文件(存储库,全局文件和系统文件)的串联。仅回购配置文件被推送。另外2个位于本地。
我想在.gitconfig文件中包含一个具有github设置的文件-这可能吗?
我可以做这样的事情:
[core]
include = /path/to/file
~/.gitconfig
)中,即不会被推送到您的github存储库中。键入' git config
'时,您会看到3配置文件(存储库,全局文件和系统文件)的串联。仅回购配置文件被推送。另外2个位于本地。
Answers:
Git(1.7.10+)现在支持以下语法.gitconfig
:
[include]
path = /path/to/file
看到这里对git change及其边缘情况的详细描述。
顺便说一句,一些细微之处值得指出:
$HOME
不支持环境变量扩展,例如。(扩展~
出现在Git 1.7.10.2中。)
如果指定了相对路径,则它相对于具有该[include]
语句的.gitconfig文件是相对的。即使跨链包含,这也可以正常工作-例如~/.gitconfig
可以具有:
[include]
path = subdir/gitconfig
并subdir/gitconfig
可以具有:
[include]
path = nested_subdir/gitconfig
...这将导致subdir/nested_subdir/gitconfig
加载。
如果git找不到目标文件,它会静默忽略该错误。这似乎是设计使然。
~
。这是因为你的.gitconfig文件仍然居住在~/.gitconfig
在配置将意味着一个相对路径~
...
~
/ $HOME
扩展实际上是作为git describe --contains 4c0a89fc
- > v1.7.10.2~12^2
(即v1.7.10.2
或更高版本),显着的,因为它似乎的Debian 7和Ubuntu量子理论将与释放v1.7.10.4
。
--global
,--local
或--file
),除非有明确告知--includes
(像git config --global --includes --list
)。
2012年更新:
参见Mike Morearty的答案:
您可以通过将特殊
include.path
变量设置为要包含的文件名来包含一个配置文件。
被包含的文件将立即展开,就像在include伪指令的位置找到了它的内容一样。
如果include.path
变量的值是相对路径,则该路径被认为是相对于在其中找到include指令的配置文件而言的。
的值include.path
受波浪符号扩展的影响:~/
被扩展为的值$HOME
,并扩展为~user/
指定用户的主目录。
我不这么认为。
我宁愿将该设置放在~/.gitconfig
文件中
用户特定的配置文件。也称为“全局”配置文件。
这样,它将完成.gitconfig项目特定的文件,而不会在推送到GitHub时发布。另请参阅此SO答案以获取有关全局配置文件的更多信息。
Git有3个配置文件。
bjeanes在评论中添加:
似乎每个人都错过了这个问题的重点。
大卫显然想推他的所有点文件的回购(bashrc
,gemrc
包括他等),.gitconfig
所以他可以有他所有的对他的所有机器设置。他(和我,就此而言)所追求的是
一种.gitconfig
通过包含和忽略私有条目来推送文件各部分的方法。
一种可能的方法是使用污迹/清理过滤器驱动程序对具有私有敏感信息的文件进行解密/加密(请参见此线程),以便使用与该文件相关的解密部分来完成一个本地文件,例如〜/ .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
(基于GPG的解决方案当然意味着您已经通过另一种方式将您的私钥/公钥传达到了您要通过克隆此特殊存储库来还原所有点文件的目标计算机上)
实际上,就您而言,涂抹脚本需要完成,因为解密该文件之后,必须继续并将相关部分添加到全局~/.gitconfig
文件中(除非您用其他位置覆盖全局配置文件)或其他点文件物。
https://kerneltrap.org/mailarchive/git/2008/3/13/1153274/thread(gpg的 不便之处将在此线程中进一步讨论)(这与拥有完整的加密Git存储库不同,如此处所述)
我相信您可以使用defunkt的hub工具来完成此 任务。这是git的命令,除其他事项外,可以让你有一个包装GITHUB_USER
和GITHUB_TOKEN
环境变量。它将覆盖本地.gitconfig
文件中的设置。
然后使其无缝,您指向的用户alias git=hub
在其ZSH配置中使用别名。然后,您应该能够获取一个本地文件,您可以在其中设置环境变量,并将您的存储库推向公共世界,同时保留所有私人信息。
**注意OSX上的自制用户,您可以通过来安装该工具brew install hub
。