具有目录范围的 Git 配置,包含多个存储库

标签 git directory repository git-config

情况如下:

  • 我有多个,我在其中编写代码,例如专业和空闲时间。这些由我计算机上的不同目录表示。
  • 每个域都包含多个 Git 存储库,位于其中一个域目录内的分层目录结构中。

对于每个域,我想使用不同的电子邮件地址作为作者/提交者信息的一部分。也就是说,我希望我的私有(private)地址列在我的业余项目中,我的公司地址列在我的专业项目中。

git config 知道 3 个范围:存储库、全局和系统范围。 我基本上需要的是存储库和全局之间的第四个作用域,代表一组存储库(或者只是文件系统中的一个目录)。

似乎git config不允许这样做。当然,我可以为每个存储库设置电子邮件地址,但我想在每次设置或克隆存储库时避免此手动步骤。一种选择是编写一个包装 git init/clone 和 git config 的脚本,还有其他想法吗?

最佳答案

基于https://stackoverflow.com/a/44036640/2377961我想我找到了一种可行的方法。

首先,为“自定义范围”(例如专业范围、空闲时间等)创建不同的配置文件,并为每个范围添加所需的用户配置

# ~/all-projects.gitconfig
[user]
    name = TheOperator
# ~/professional.gitconfig
[user]
    email = yourname@yourwork.com
# ~/freetime.gitconfig
[user]
    email = yourname@private-email.com

而不是在标准 gitconfig 中添加这样的行:

# ~/.gitconfig
[include]
    path = all-projects.gitconfig
[includeIf "gitdir/i:c:/work/"]
    path = professional.gitconfig
[includeIf "gitdir/i:c:/freetime/"]
    path = freetime.gitconfig 

gitdir/i 之后的目录应与项目组的父目录匹配。 在我的示例中,您应该存储空闲时间域的 git-repos,例如c:/freetime/my-freetime.domain/.git

关于具有目录范围的 Git 配置,包含多个存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40272879/

相关文章:

Git 预推钩子(Hook)

git rebase --strategy=我们的用例澄清

git - 从多个 git rebases 中恢复 'old commits'

objective-c - iOS safari 风格的文件夹

python - 创建的目录具有错误的权限(被锁定)

git - 与 Visual Studio 存储库中的共享库

repository - 使用 Ninject 2.2 绑定(bind)通用存储库和特定存储库

git - 如何仅在我的本地分支机构上使用 "git log --graph --oneline --all"?

java - 如何将 jar 放入 Ivy 本地存储库

java - 损坏的 NTFS 文件夹 java