调整你的 Git 配置以适应多个用户 ID 的需要
创始人
2024-03-02 06:04:03
0

可以使用相同的机器用于工作和个人的 Git 提交,而无需手动重置你的配置。

Git 的 git config 命令可以让你为 Git 设置仓库或全局选项。它有很多选项,其中的一个选项 includeIf 在你使用在 Git 时有双重角色时非常方便,比如说,你既是全职的开发者,又在业余时间为开源项目做贡献。在这种情况下,大多数人都不想为两个角色使用一个共同的配置,或者,至少,他们肯定希望保持配置的某些部分是不同的,尤其是当他们在两个角色中使用同一台计算机时。

我的情况就是这样,所以我在 Git 配置中保留了两组不同的邮件 ID。这样一来,在我工作场所的项目仓库中提交的内容就会使用我办公室的邮件 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 小贴士是什么?请在评论中分享吧!


via: https://opensource.com/article/20/10/git-config

作者:Ramanathan M 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Git

相关内容

冲刺 " 开源 ...
近日,开源共识(上海)网络技术有限公司(以下简称 " 开源中国 "...
2025-03-07 23:20:36
邀请码炒到10万?Open...
新智元报道 编辑:编辑部 JHNZ 【新智元导读】离了个大谱,M...
2025-03-07 14:23:04
腾讯混元发布并开源图生视频...
每经AI快讯,3月6日,据腾讯混元消息,腾讯混元发布图生视频模型并...
2025-03-06 16:50:53
开源仅6天,阿里万相大模型...
3月3日消息,开源社区Hugging Face最新榜单显示,开源仅...
2025-03-03 20:19:33
EA 开源 4 款《命令与...
IT之家 2 月 28 日消息,EA 今日在 GitHub 开源了...
2025-02-28 12:48:47
DeepSeek开源第四弹...
DeepSeek开源周(OpenSourceWeek)第四弹来了,...
2025-02-27 23:19:27

热门资讯

使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
Bazzite:专为 Stea... 为 Linux 桌面或者 Steam Deck 做好游戏准备,听起来都很刺激!对于一个专为 Linu...
Motrix:一个漂亮的跨平台... 一个开源的下载管理器,提供了一个简洁的用户界面,同时提供了跨平台操作的所有基本功能。在这里了解关于它...
Bash 脚本中如何使用 he... here 文档 here document (LCTT 译注:here 文档又称作 heredoc ...
使用 dialog 和 jq ... 为何选择文字用户界面(TUI)?许多人每日都在使用终端,因此, 文字用户界面 Text User I...