针对不同平台拥有多个 .gitconfig 文件的正确方法是什么?

问题描述 投票:0回答:1

我的 HOMEDIR 中有一个默认的全局

~/.gitconfig
文件,其中包含以下内容:

[includeIf "gitdir:/mnt/c/Users/myname/Documents/work/github"]
  path = /mnt/c/Users/myname/.gitconfig-github

[includeIf "gitdir:/mnt/c/Users/myname/Documents/work/gitlab"]
  path = /mnt/c/Users/myname/.gitconfig-gitlab

[init]
        defaultBranch = main

我还有 2 个以上在全局中引用的配置文件

.gitconfig
,这些位于我的主要工作位置(不是 HOMEDIR)。

这是

.gitconfig-github
文件的一个示例:

[gpg]
    format = ssh
[commit]
    gpgsign = true
[user]
    name = mygithubname
    username = mygithubusername
    email = mygithubemai[email protected]
    signingkey = /mnt/c/Users/myname/.ssh/id_rsa.pub

当我在全球

~/.gitconfig
的某个 DIR 中工作时,例如。
/mnt/c/Users/myname/Documents/work/github
它应该使用适当的引用配置以及配置中的用户名和电子邮件,但事实并非如此。

如果我跑步:

git config --list
我得到这个:

includeif.gitdir:/mnt/c/Users/myname/Documents/work/github.path=/mnt/c/Users/myname/.gitconfig-github
includeif.gitdir:/mnt/c/Users/myname/Documents/work/gitlab.path=/mnt/c/Users/myname/.gitconfig-gitlab
init.defaultbranch=main

然后如果我跑步:

git config user.name

我应该根据我所在的目录(gitlab 或 github)取回用户名。相反,我得到了“空白”回报。如果我位于正确的目录中,它应该使用我在全局配置中引用的两个配置文件中的一个。 尽管找到了多个指南,但这就是实现此目的的方法。这是行不通的。当我运行 git 克隆时,git 总是询问我的用户名和密码。

我们中的许多人在多个平台上拥有多个帐户。那么正确的方法是什么?

git github gitlab config git-config
1个回答
1
投票

gitdir:

行必须以

.git
结尾,因此全局 .gitconfig 文件应如下所示:
[includeIf "gitdir:/mnt/c/Users/myname/Documents/work/github/**/.git"]
  path = /mnt/c/Users/myname/.gitconfig-github

[includeIf "gitdir:/mnt/c/Users/myname/Documents/work/gitlab/**/.git"]
  path = /mnt/c/Users/myname/.gitconfig-gitlab

[init]
        defaultBranch = main

此外,通过添加 glob 
/**/

,我可以覆盖例如中的任何 git 存储库。

.../gitlab/myrepo1
我现在在 git repo 文件夹中得到正确的响应:

git config -l includeif.gitdir:/mnt/c/Users/myname/Documents/work/github/**/.git.path=/mnt/c/Users/myname/.gitconfig-github includeif.gitdir:/mnt/c/Users/myname/Documents/work/gitlab/**/.git.path=/mnt/c/Users/myname/.gitconfig-gitlab gpg.format=ssh commit.gpgsign=true user.name=mygithubname user.username=mygithubusername [email protected]

© www.soinside.com 2019 - 2024. All rights reserved.