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

推荐订阅源

T
Tenable Blog
Last Week in AI
Last Week in AI
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
H
Help Net Security
F
Fortinet All Blogs
MyScale Blog
MyScale Blog
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 司徒正美
量子位
N
Netflix TechBlog - Medium
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
Recorded Future
Recorded Future
博客园 - 三生石上(FineUI控件)
Vercel News
Vercel News
aimingoo的专栏
aimingoo的专栏
I
InfoQ
Microsoft Security Blog
Microsoft Security Blog
Scott Helme
Scott Helme
The Last Watchdog
The Last Watchdog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
AI
AI
WordPress大学
WordPress大学
Security Archives - TechRepublic
Security Archives - TechRepublic
Google Online Security Blog
Google Online Security Blog
U
Unit 42
V2EX - 技术
V2EX - 技术
MongoDB | Blog
MongoDB | Blog
Schneier on Security
Schneier on Security
博客园 - Franky
H
Heimdal Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Jina AI
Jina AI
W
WeLiveSecurity
P
Privacy & Cybersecurity Law Blog
Cloudbric
Cloudbric
B
Blog RSS Feed
N
News | PayPal Newsroom
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
I
Intezer
Hacker News - Newest:
Hacker News - Newest: "LLM"
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园_首页
罗磊的独立博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
雷峰网
雷峰网

Linux – 魔帆博客

Git 提示 fatal: unsafe repository is owned by someone else 错误 | 魔帆博客 Linux 报错Certificate verification failed: The certificate is NOT trusted. | 魔帆博客 Fedora 系统升级 32->34 跨版本升级 | 魔帆博客 教程:如何更新安装 docker-compose V2 和使用 docker switch | 魔帆博客 Docker WSL1/2 迁移 Linux 发行版目录 | 魔帆博客 双重验证 Authy 导出所有 TOTP token 和 golang 配置 GOPROXY 解决网络问题 | 魔帆博客 Linux 教程:Linux 初学者必了解的概念 | 魔帆博客 创建支持安全启动(Secure Boot)的 Arch Linux ISO 安装镜像 | 魔帆博客 使用 Aria2 搭建离线下载服务器 | 魔帆博客 【记录】Deepin 桌面无限转圈(风火轮) | 魔帆博客 梅林固件KoolProxy插件崩溃连接ssh卸载指南(北) | 魔帆博客 [Linux] dconf 系统配置编辑器——我的系统我做主 | 魔帆博客 Arch Linux 通过 xdg-mime 设置默认文件管理器解决总是用 Visual Studio Code 打开文件夹的问题 | 魔帆博客
Git配置:如何优雅的配置多用户并使用 ssh 密钥验证 | 魔帆博客
野小新 · 2023-05-18 · via Linux – 魔帆博客

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 在不同的项目中使用不同的用户信息。这种方法可以保证我们的代码提交记录更加准确、清晰,也能更好地满足我们的需求。