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

推荐订阅源

博客园_首页
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
G
Google Developers Blog
B
Blog
Engineering at Meta
Engineering at Meta
阮一峰的网络日志
阮一峰的网络日志
The Register - Security
The Register - Security
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 叶小钗
The Cloudflare Blog
The Hacker News
The Hacker News
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
雷峰网
雷峰网
F
Fortinet All Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Hackread – Cybersecurity News, Data Breaches, AI and More
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
T
Threat Research - Cisco Blogs
A
About on SuperTechFans
量子位
Recorded Future
Recorded Future
博客园 - 三生石上(FineUI控件)
H
Help Net Security
Help Net Security
Help Net Security
P
Palo Alto Networks Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Troy Hunt's Blog
W
WeLiveSecurity
V
Vulnerabilities – Threatpost
T
The Exploit Database - CXSecurity.com
Know Your Adversary
Know Your Adversary
Apple Machine Learning Research
Apple Machine Learning Research
Scott Helme
Scott Helme
N
News | PayPal Newsroom
AWS News Blog
AWS News Blog
D
DataBreaches.Net
Blog — PlanetScale
Blog — PlanetScale
MongoDB | Blog
MongoDB | Blog
B
Blog RSS Feed
腾讯CDC
J
Java Code Geeks
Microsoft Azure Blog
Microsoft Azure Blog
TaoSecurity Blog
TaoSecurity Blog
GbyAI
GbyAI
Y
Y Combinator Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
D
Docker

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