调整你的 Git 配置以适应多个用户 ID

在你的工作和个人 Git 提交中使用同一台机器,而无需手动重置你的配置。
79 位读者喜欢这个。
Chat via email

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 配置指令的一部分,允许你有条件地设置自定义配置。此外,自定义配置的路径可以设置为指令的一部分。

此指令支持三个关键字:gitdirgitdir/Ionbranch。我将简要解释 gitdir,我在上面的代码片段中使用它;你可以在 文档 中了解其他两个。

includeIf 指令中使用 gitdir 关键字会导致对模式执行条件检查。根据规则,如果当前工作目录与 gitdir 中指定的目录模式匹配,则它会从给定的路径中选择配置。我将把此规则应用于配置代码片段,以展示它是如何评估的。

在配置代码片段中,你可以看到一个简单的模式 ~/,与 gitdir 关键字一起使用。此模式被替换为存储在 $HOME 环境变量中的值。

如何使用它

如果你使用同一个系统来处理托管在 GitHub 或 GitLab 上的开源项目,并在工作中提交到 Git 仓库,你可以有两个顶级目录,例如 $HOME/priv_scm$HOME/work_scm。在这两个目录中,你可以有两个单独的 .gitconfig 文件,其中包含与你的 user.nameuser.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 技巧是什么?在评论中分享它们!

接下来阅读什么
标签
Avatar
Ram 在印度南部城市班加罗尔的一家软件公司担任 DevOps 工程师。他期待花时间和精力骑自行车探索真实世界。不在工作时,他喜欢读书。

评论已关闭。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.