用于个人和工作配置文件的 Git includeIf 不起作用

Ica*_*ruk 10 git profile config include

我一直在谷歌搜索这个,尝试来自不同来源的不同方法......但它不起作用。

我想用我的个人资料(用“git config --global user.email ...”定义)推送提交,除非我在我的工作文件夹中。

我的 .gitconfig 的内容位于 C:/Users/my-user/

[user]
    name = Personal
    email = personal@personal.com

[includeIf "gitdir: F:/Work/CompanyName/"]
    path = F:/Work/CompanyName/.gitconfig-work

Run Code Online (Sandbox Code Playgroud)

我的 .gitconfig-work 的内容位于 F:/Work/CompanyName/

[user]
    name = Work
    email = work@work.com
Run Code Online (Sandbox Code Playgroud)

当我从位于以下位置的工作转到克隆存储库时:

F:/Work/CompanyName/Project

我用:

git config --show-origin --get user.email

它显示:

file:C:/Users/<my-user>/.gitconfig

而不是我定义的工作路线。

谢谢你的帮助。

tor*_*rek 11

您需要在以下位置删除一个空格:

[includeIf "gitdir: F:/Work/CompanyName/"]
Run Code Online (Sandbox Code Playgroud)

即,请阅读:

[includeIf "gitdir:F:/Work/CompanyName/"]
Run Code Online (Sandbox Code Playgroud)

注意后面的冒号gitdir和要测试的路径名之间没有空格。

(您的 Git 还需要至少为 2.13 版。您可以考虑使用,gitdir/i:f:/work/companyname/以便在此处不区分大小写,假设您的主机系统也不区分大小写,正如F:部分建议的那样。)

  • 我正在 macOS 上工作,结果你需要用尾随 `/` 来结束你的路径,在我的例子中,我必须做 `[includeIf "gitdir:" 而不是 `[includeIf "gitdir:~/Work"]` 。 〜/工作/“]` (5认同)
  • @Forsaken:所有示例都以斜杠结尾。该文档指出,当您使用“以 / 结尾的模式时,将自动添加 **”(请参阅​​[“git config”文档](https://git-scm.com/docs/git-config )并在 includeIf 指令中搜索 gitdir 指令),因此,如果您想匹配 *~/Work 下的内容,您将需要尾部斜杠(让 Git 添加 `**`)或 `/**`。但要匹配 ~/Work 中的一个“特定”存储库,您可以将其拼写出来。 (2认同)