gitconfig忽略includeIf

3

我正在尝试设置我的git配置文件,以便我可以使用工作环境和个人环境。

这是我~.gitconfig文件的内容(碰巧工作和私人分别存储在Github上):

 [url "git@github.com:"]
    insteadOf = https://github.com/
 [core]
    editor = vim
 [includeIf "gitdir:~/go/src/github.com/work/"]
    path = ~/.gitconfig-work
 [includeIf "gitdir:~/go/src/github.com/fzd/"]
    path = ~/.gitconfig-private

以下是两个文件的内容:
> cat ~/.gitconfig-work
[user]
    email = workerID@company.com
    name = realname
    signingkey = 454684684654...
[commit]
    gpgSign = true

> cat ~/.gitconfig-private
[user]
    email = fzd@email.com
    name = fzd

现在让我们漫游到这些目录中的一个:
> cd ~/go/src/github.com/work/
> git config --get user.email  
> 

> cd ~/go/src/github.com/fzd/
> git config --get user.name
> 

以上都没有返回字符串。

我原本以为它会工作(这可以解决我麻烦的git配置)。

现在,来到“有趣”的部分: 这个配置最初是我的工作配置,只有工作设置正常。 当我尝试从github克隆存储库时,无论我在哪里,它都使用我的工作设置(自我尝试后,我还没有重新启动 - 我想这还不值得)。

有人能告诉我我的配置有什么问题吗?为什么它使用了工作参数?是否存在git配置缓存?

[编辑] 这是我的~/.ssh/config文件的内容:

 Host github.com
     Hostname ssh.github.com
     Port 443
 
 Host *
  ServerAliveInterval 10
  AddKeysToAgent yes
  IgnoreUnknown UseKeychain
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519_work

我确实拥有一个专用仓库的密钥对,但我不完全确定如何同时使用两个密钥。可能是像这样的方式。

1个回答

4

includeIf 只能在 仓库 下的 ~/go/src/github.com/work/~/go/src/github.com/fzd/ 中使用,而不能在非存储库目录中使用。

测试方法:

cd ~/go/src/github.com/work/<some-repo>
git config --get user.email

这对我之前拥有的work repos很好用。也许问题是,现在我想使用fzd@email.com克隆~/go/src/github.com/fzd/中的一个repo,而不必在命令行上编写它。这可行吗? 这将是我检查其他repos中是否获得了不同值的唯一方法。[[当我尝试在.../fzd中克隆一个工作repo时,它可以很好地工作并使用我的工作ID]] - fzd
1
当您克隆一个仓库时,user.name/user.email 不会被使用。这些配置设置仅在您创建新的提交时使用。但它们不是凭据,不用于身份验证,也不用于克隆。克隆后,请进入新的仓库并测试 git config --get user.email - phd
好的,我们正在进展。我确实可以在一侧成功克隆我的工作存储库,在另一侧克隆我的私人存储库...但仍有一个我无法克隆,尽管我可以在GitHub网站上访问它。我认为这个问题已经解决了,非常感谢!我会尝试理解另一个存储库发生了什么--而那是我一直用来检查它是否有效的存储库 :( - fzd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接