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

推荐订阅源

宝玉的分享
宝玉的分享
T
Threat Research - Cisco Blogs
H
Hacker News: Front Page
N
News and Events Feed by Topic
Know Your Adversary
Know Your Adversary
Cisco Talos Blog
Cisco Talos Blog
SecWiki News
SecWiki News
C
Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Tor Project blog
K
Kaspersky official blog
Forbes - Security
Forbes - Security
Webroot Blog
Webroot Blog
Schneier on Security
Schneier on Security
P
Privacy & Cybersecurity Law Blog
H
Heimdal Security Blog
Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
S
SegmentFault 最新的问题
V
Vulnerabilities – Threatpost
T
Tenable Blog
T
Tailwind CSS Blog
P
Privacy International News Feed
WordPress大学
WordPress大学
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
博客园 - Franky
Hacker News: Ask HN
Hacker News: Ask HN
Jina AI
Jina AI
C
Cybersecurity and Infrastructure Security Agency CISA
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
雷峰网
雷峰网
Vercel News
Vercel News
A
About on SuperTechFans
爱范儿
爱范儿
Simon Willison's Weblog
Simon Willison's Weblog
AWS News Blog
AWS News Blog
The Last Watchdog
The Last Watchdog
Engineering at Meta
Engineering at Meta
Spread Privacy
Spread Privacy
Security Archives - TechRepublic
Security Archives - TechRepublic
博客园 - 司徒正美
量子位
博客园 - 三生石上(FineUI控件)
J
Java Code Geeks
Hacker News - Newest:
Hacker News - Newest: "LLM"
Recorded Future
Recorded Future
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Martin Fowler
Martin Fowler
Project Zero
Project Zero

技术教程 – 魔帆博客

Mac mini + iPad 随航梦幻联动!零显示器配置指南,iPad 秒变 Mac 主屏幕 | 魔帆博客 使用 GNU/Linux 搭建多出口软路由 | 魔帆博客 配置和使用 Windows Dev Drive 开发驱动器 | 魔帆博客 解锁iOS侧载自由:使用sideStore轻松搞定ipa签名 | 魔帆博客 Windows 注册表编辑或清除多显示器配置 | 魔帆博客 Git 提示 fatal: unsafe repository is owned by someone else 错误 | 魔帆博客 Linux 报错Certificate verification failed: The certificate is NOT trusted. | 魔帆博客 安装有 RootMagiskXposedPlay 的 WSA 安卓子系统 | 魔帆博客 Fedora 系统升级 32->34 跨版本升级 | 魔帆博客 教程:如何更新安装 docker-compose V2 和使用 docker switch | 魔帆博客 Windows10 系统盘开启 Bitlocker | 魔帆博客 2022 年 Android 下的安卓浏览器使用指北-Firefox向 | 魔帆博客 Docker WSL1/2 迁移 Linux 发行版目录 | 魔帆博客 Spotify 主题 spicetify-fluent - 微软 win11 风格美化 | 魔帆博客 WSA 安卓子系统 adb 提示 cannot connect the target machine actively refused it 10061 | 魔帆博客 双重验证 Authy 导出所有 TOTP token 和 golang 配置 GOPROXY 解决网络问题 | 魔帆博客 powershll 像 bash 一样为单个命令设置临时环境变量 | 魔帆博客 Linux 教程:Linux 初学者必了解的概念 | 魔帆博客 安卓电池充电保护-智能充电/温控切断(Root方案) | 魔帆博客
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 在不同的项目中使用不同的用户信息。这种方法可以保证我们的代码提交记录更加准确、清晰,也能更好地满足我们的需求。