gitconfig 忽略 includeIf

gitconfig ignoring includeIf

我正在尝试设置我的 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
> 
上面的

None返回了一个字符串。

我期待它能工作(它会解决我麻烦的 git 配置)。

现在,“有趣”的部分:这个配置最初是我的工作配置,只有工作设置正确。 当我尝试从 github 克隆一个 repo 时,无论我身在何处,它都在使用我的工作设置(自从我尝试摆弄 git 以来我还没有重新启动 - 我想这还不值得) .

谁能告诉我我的配置有什么问题?为什么要使用工作参数? 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

我确实有一个私人存储库的密钥对,但我不太确定如何在此处同时拥有这两个密钥。可能类似于 this.

includeIf 仅适用于 ~/go/src/github.com/work/~/go/src/github.com/fzd/ 下的 存储库 ,但不适用于 non-repo 目录。

测试:

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