Git 的 git config 命令(以下简称“config”)使你能够为 Git 设置仓库或全局选项。它有许多选项,其中之一 includeIf
在你使用 Git 担任双重角色时非常方便,例如,全职担任开发人员并在业余时间为开源项目做贡献。大多数在这种情况下的人不希望为这两个角色使用通用配置,或者至少宁愿保持其配置的某些部分是不同的,特别是如果他们在两个角色中使用同一台计算机。
这就是我的情况,所以我保留了两组独立的邮件 ID 作为我的 Git 配置的一部分。这样,与我在工作场所的项目相关的仓库中的提交会带有我的工作邮件 ID,而提交到托管在我个人 GitHub 帐户中的仓库的提交则使用我的个人邮件 ID。
为了说明,这是一个来自我的全局配置 (维护在 $HOME/.gitconfig
) 的示例代码片段,我将在下面描述它。
[includeIf "gitdir:~/priv_scm/"]
path = ~/priv_scm/.gitconfig
[includeIf "gitdir:~/work_scm/"]
path = ~/work_scm/.gitconfig
什么是 includeIf?
includeIf.condition.path
变量是 include
配置指令的一部分,允许你有条件地设置自定义配置。此外,自定义配置的路径可以设置为指令的一部分。
此指令支持三个关键字:gitdir
、gitdir/I
和 onbranch
。我将简要解释 gitdir
,我在上面的代码片段中使用它;你可以在 文档 中了解其他两个。
在 includeIf
指令中使用 gitdir
关键字会导致对模式执行条件检查。根据规则,如果当前工作目录与 gitdir
中指定的目录模式匹配,则它会从给定的路径中选择配置。我将把此规则应用于配置代码片段,以展示它是如何评估的。
在配置代码片段中,你可以看到一个简单的模式 ~/
,与 gitdir
关键字一起使用。此模式被替换为存储在 $HOME
环境变量中的值。
如何使用它
如果你使用同一个系统来处理托管在 GitHub 或 GitLab 上的开源项目,并在工作中提交到 Git 仓库,你可以有两个顶级目录,例如 $HOME/priv_scm
和 $HOME/work_scm
。在这两个目录中,你可以有两个单独的 .gitconfig
文件,其中包含与你的 user.name
和 user.email
相关的设置。但是,它们也可以包含在存储在 $HOME
的全局 .gitconfig
中,该文件可以保存这两个环境通用的所有自定义设置。
这是一个示例 $HOME/priv_scm/.gitconfig
的代码片段
$ cat $HOME/priv_scm/.gitconfig
[user]
name = Ramanathan Muthiah
email = <personal-mailid-goes-here>
有了这个配置,你可以切换目录并开始处理开源项目,而无需手动重置一些与 Git 相关的配置。这些更改在主要的 .gitconfig
中借助 includeIf
条件指令自动处理。
Git 技巧
我希望这个技巧能帮助你组织你的 Git 项目。你最喜欢的 Git 技巧是什么?在评论中分享它们!
评论已关闭。