我知道可以设置覆盖用户级配置的 per-repo 配置(即 /path/to/my/repo/.gitconfig
覆盖 ~/.gitconfig
)。是否可以设置 git configs 来覆盖给定文件夹的所有子文件夹的用户级设置?即,我有
|--topLevelFolder1
|--\
| ---.gitconfig_override
|--\
| ---childFolder1
| \---[...]
|--\
| ---childFolder2
| \---[...]
我希望
.gitconfig_override
中定义的设置适用于 childFolder1
和 childFolder2
。我这样做的动机如下:我有一台工作笔记本电脑,我也在业余时间用于个人项目。我所有的工作代码都嵌套在一个文件夹中。当我推送工作 git repos 时,我需要使用我的工作角色 - 工作登录名而不是姓名和工作电子邮件。当我推送到我自己的个人 (github) 存储库时,我想使用我的真实姓名和个人电子邮件。
我想到的其他可能的解决方案(和问题):
我检查了 this question ,它似乎只包含单个 repos 的解决方案,而不是多个。希望有人会看到这个问题而错过了那个问题!
最佳答案
编辑:Git 2.13 引入了 conditional includes ,旨在解决这个确切的问题。
为了历史的缘故(并且用户坚持使用旧版本的 git),我的原始答案保留在下面。
====================================
根据阅读 gitconfig 联机帮助页,不支持您想要的确切行为。
但是,从 git 1.7.12 开始,Git 从 four different sources 读取配置数据,其中两个是特定于用户的:$XDG_CONFIG_HOME/git/config
和 ~/.gitconfig
。 ~/.gitconfig
中的条目覆盖 $XDG_CONFIG_HOME/git/config
中的条目。
这意味着您可以将您的个人 gitconfig 存储在 $XDG_CONFIG_HOME/git/config
并将特定于机器的覆盖放在 ~/.gitconfig
中。就像是
[user]
email = username@example.com
在
~/.gitconfig
中应该涵盖您的电子邮件案例。请注意,如果 $XDG_CONFIG_HOME 未设置,git 将查找
~/.config/git/config
。这对我很有效,因为我在工作机器上只有两个个人存储库(我的 emacs 配置和我的 dotfiles)。如果您经常将个人存储库添加到您的工作机器中,这对您来说可能还不够好。
在这种情况下,围绕
git init
和 git clone
的自定义包装器将是您最好的选择。$PATH 上名称与“git-*”匹配的任何二进制文件都可以作为 git 命令调用,因此您只需要一对 shell 脚本来调用带有所有传递的参数的原始命令,然后将正确的配置文件复制到
.git/config
。关于git - 为所有子文件夹设置 git 配置值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21307793/