惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
P
Palo Alto Networks Blog
月光博客
月光博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
I
InfoQ
aimingoo的专栏
aimingoo的专栏
腾讯CDC
T
Threatpost
D
DataBreaches.Net
Vercel News
Vercel News
F
Fortinet All Blogs
Engineering at Meta
Engineering at Meta
C
Cybersecurity and Infrastructure Security Agency CISA
Forbes - Security
Forbes - Security
U
Unit 42
C
Check Point Blog
Blog — PlanetScale
Blog — PlanetScale
O
OpenAI News
量子位
TaoSecurity Blog
TaoSecurity Blog
Microsoft Azure Blog
Microsoft Azure Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
V
Visual Studio Blog
Recorded Future
Recorded Future
云风的 BLOG
云风的 BLOG
Security Archives - TechRepublic
Security Archives - TechRepublic
The Last Watchdog
The Last Watchdog
S
Security Affairs
Attack and Defense Labs
Attack and Defense Labs
罗磊的独立博客
Stack Overflow Blog
Stack Overflow Blog
Microsoft Security Blog
Microsoft Security Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
V2EX
小众软件
小众软件
S
SegmentFault 最新的问题
www.infosecurity-magazine.com
www.infosecurity-magazine.com
W
WeLiveSecurity
AI
AI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园 - 聂微东
I
Intezer
Know Your Adversary
Know Your Adversary
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The Cloudflare Blog
博客园_首页
NISL@THU
NISL@THU
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO

魔帆博客

Python包管理的血泪史:从混乱到秩序的漫长征 | 魔帆博客 Mac mini + iPad 随航梦幻联动!零显示器配置指南,iPad 秒变 Mac 主屏幕 | 魔帆博客 日文中的衬线、非衬线混排 | 魔帆博客 使用 GNU/Linux 搭建多出口软路由 | 魔帆博客 网页排版中的字体衬线 | 魔帆博客 配置和使用 Windows Dev Drive 开发驱动器 | 魔帆博客 解锁iOS侧载自由:使用sideStore轻松搞定ipa签名 | 魔帆博客 Windows 注册表编辑或清除多显示器配置 | 魔帆博客 Git 合并本地两个不同的 Repo 仓库 | 魔帆博客 【记录】使用Golang开发腾讯云函数踩的坑 | 魔帆博客 Git 提示 fatal: unsafe repository is owned by someone else 错误 | 魔帆博客 【笔记】Hydro二次开发总结 前端篇(一) | 魔帆博客 C/C++ 二叉树 | 魔帆博客 Linux 报错Certificate verification failed: The certificate is NOT trusted. | 魔帆博客 Python 数字大小写转换 | 魔帆博客 安装有 RootMagiskXposedPlay 的 WSA 安卓子系统 | 魔帆博客 Fedora 系统升级 32->34 跨版本升级 | 魔帆博客 教程:如何更新安装 docker-compose V2 和使用 docker switch | 魔帆博客 Windows10 系统盘开启 Bitlocker | 魔帆博客
Git配置:如何优雅的配置多用户并使用 ssh 密钥验证 | 魔帆博客
野小新 · 2023-05-18 · via 魔帆博客

Git 是分布式版本控制软件,最初由林纳斯·托瓦兹(Linus Torvalds)创造,于2005年以 GPL 许可协议发布。最初目的是为了更好地管理 Linux 内核开发而设计。今天它已经成为了最受欢迎的版本控制系统,并在全球范围内得到广泛的使用。

在使用它进行协作开发时,我们通常需要配置本地 Git 环境,以便让 Git 记住个人信息。这样在提交代码时,Git 就知道是谁进行了提交,并能够跟踪和记录修改历史。使用命令配置要么只能全局配置一个,或者每个仓库一个一个配置用户,在实际开发中,我们有时需要频繁同时使用不同的 Git 账户,比如工作账户和个人账户等。如果按传统的配置方法就略显麻烦了。

这时候,我们可以通过 .gitconfig 文件来配置多个 Git 账户。

.gitconfig 是 Git 的配置文件,位于当前用户的主目录下,用于记录 Git 的配置信息,包括用户名、Email、SSH keys 等。在这个文件中,我们可以为每个用户设置一个单独的配置项,以便在不同的项目中自动选择对应的用户信息。

接下来,我将向大家介绍在 Linux 和 Windows 系统中,如何使用目录匹配的方式配置多个 Git 用户。

Linux 上的配置方法

在 Linux 系统中,我们可以使用以下命令新建和编辑.gitconfig 文件:

.gitconfig 文件需要创建在用户的 home 目录下

注意事项
touch .gitconfig
vim .gitconfig  # 使用vim编辑这个文件

.gitconfig 文件中,我们可以通过以下配置项来设置多个 Git 用户信息:

[user]
        name = Paxxs
        email = 邮箱
[core]
        sshCommand = ssh -i ~/.ssh/ssh_key密钥路径 -F /dev/null
[includeIf "gitdir:~/project/github.com/SuperPaxxs/"]
        path = .gitconfig-superpaxxs

其中,第一个 [user] 配置项是全局用户信息,用于设置 Git 的默认用户信息。这个信息会被应用到所有 Git 仓库中,如果某个仓库没有单独配置用户信息,就会使用该全局配置。

接下来,我们使用 includeIf 配置文件匹配规则,gitdir 可以指定要匹配的 Git 仓库目录或路径,path 则是要使用的自定义配置文件路径。

在上面的例子中,我们定义了一个以 ~/project/github.com/SuperPaxxs/ 结尾的文件夹路径,然后使用 .gitconfig-superpaxxs 文件来保存该文件夹专属的用户信息。之后在这个文件夹内的所有仓库,默认用户都是在 .gitconfig-superpa 中定义的用户。

如果不以 / 结束目录名,则可能会出现不匹配的情况。因此,我们必须确保仓库路径以 / 结尾才能正确匹配。

注意事项

如果在 Github 或其他平台上配置了 ssh key 密钥验证,就需要像上面那个配置文件里的 core.sshCommand 配置一样的指定 ssh key 路径,如果不需要这种验证,删掉上面的 core.sshCommand 即可。

最后就只需要创建 .gitconfig-superpaxxs 文件了

[user]
        name = SuperPaxxs
        email = 邮箱
[core]
        sshCommand = ssh -i ~/.ssh/ssh_key密钥路径 -F NUL

Windows 上的配置

Windows 上的配置和 Linux 上的配置几乎一致,只有路径等的表示方式会有不同。所以详细解释请参考上方内容。

还有一个地方可能会有一点点不同,就是使用 ssh key 验证配置的那块地方:sshCommand。ssh 在 Windows 上有不同的版本,有的是那种模拟的环境,所以也能像 Linux 那样指定黑洞路径 /dev/null

在 Windows 用户文件中创建 .gitconfig 文件并编辑:

Fervent-Bucket on master 
❯ touch C:\Users\Paxos\.gitconfig

Fervent-Bucket on master 
❯ code-insiders.cmd C:\Users\Paxos\.gitconfig  #这里是使用 vscode 编辑,任何编辑器都行
[user]
        name = Paxxs
        email = 邮箱
[core]
        sshCommand = ssh -i ~/.ssh/ssh_key密钥路径 -F NUL
[includeIf "gitdir:D:/Project/github.com/SuperPaxxs/"]
        path = .gitconfig-superpaxxs

在上面的例子中,我们同样定义了一个以 D:/Project/github.com/SuperPaxxs/ 结尾的路径,然后使用 .gitconfig-superpaxxs 文件来保存该文件夹内的专属的用户信息。

除了以上所提到的配置项之外,.gitconfig 文件还支持很多其他的配置选项,如代理设置、颜色配置等。对于想要深入了解 Git 的配置和使用的同学,可以参考官方文档或其他相关教程。

总之,通过以上介绍,我们可以看到,在 Linux 和 Windows 系统中,都可以使用目录匹配的方式来设置多个 Git 用户信息,让 Git 在不同的项目中使用不同的用户信息。这种方法可以保证我们的代码提交记录更加准确、清晰,也能更好地满足我们的需求。