我想在同一台电脑上使用两个不同的GitHub账户,所以我为它们都设置了ssh密钥。两个账户都运行良好。我不想在每次创建新的repo时都配置邮箱和名字,所以我四处查看了一下,发现了git的“includeIf”部分。
我使用的是git版本2.37.3
这些是我现在的配置文件。
~/.gitconfig文件
[user]
email = "home@example.com"
name = "Home"
[includeIf "hasconfig:remote.*.url:git@github.com-Work:*/**"]
email = "work@example.com"
name = "Work"
~/.ssh/配置
Host github.com-Home
HostName github.com
User git
IdentityFile ~/.ssh/Home
Host github.com-Work
HostName github.com
User git
IdentityFile ~/.ssh/Work
当我克隆像git clone git@github.com-Home:Home/repo.git
这样的存储库并在存储库中运行git config user.name
时,我得到了预期的输出Home
但是,当我为我的工作帐户克隆一个repo(如git clone git@github.com-Work:Work/repo.git
)并在repo中运行git config user.name
时,得到的是Home
而不是Work
。
你知道为什么这行不通吗?
2条答案
按热度按时间mkshixfv1#
正如其名称所示,
includeIf...
语句只允许包含另一个 file(与之相对:同一文件内的配置部分)。您必须将
email, name
参数放在一个单独的文件中,并在主配置文件中使用path = ...
指向该文件。引用
git help config
的相关示例:我需要花时间检查一下你的url语法是否有效,我认为
git@github.com-Work:**
模式就足够了(虽然我还没有测试过)zc0qhyus2#
当然,首先要改变的是@LeGEC已经提到的。
然而,还有一个额外的细节需要注意(这在问题中已经做了,但我想强调一下,因为我不能发表评论,我会把它作为答案发布,以供将来参考)。
指定的URL必须在末尾有一个glob模式
*/**
。**
是不够的,因此您可能会发现自己处于git不包含额外配置的情况。示例:
代替
这是我不知道的事情,因此我想知道为什么它不起作用。对我来说,解决办法是问题!