本地电脑同时管理Git多个账户,轻松办公摸鱼赚外快。

Git使用之一台机器管理多个代码托管平台

需求背景

我们在一台开发机器上,会遇到想要管理公司自建仓库和Github这样多个代码托管平台的场景。
通常我们在网上学习到的配置是系统账号下的全局配置,可以拉取平台A的代码就没办法继续拉取平台B的代码了。此文提供了两种解决方案。

两种解决方案

  1. 多个平台都使用同一个邮箱进行注册,然后配置的SSH 密钥可以支持我们在多个平台上进行代码管理。
  2. 多个平台且拥用多个不同邮箱账号注册时,需要告知SSH指定使用特定的的密钥文件进行访问(本文重点讲解)。

准备如下

使用 ssh-keygen -r rsa -C '你的邮箱' 进行密钥对生成。生成后大致位置在/home/account/.ssh下。具体文件目录要看你的账号。生成过程中你也可以指定目录和生成的文件名。本文准备的材料如下。

  • 账号 账号A@gmail.com
  • 账号 账号B@gmail.com
  • 生成的密钥对文件树如下所示
/root/.ssh
|-- /root/.ssh/config
|-- /root/.ssh/gitee
|-- /root/.ssh/gitee.pub
|-- /root/.ssh/id_rsa
|-- /root/.ssh/id_rsa.pub
|-- /root/.ssh/known_hosts
`-- /root/.ssh/known_hosts.old

你将学习到

Git的三级别配置

网上大多数以git config global user.email "你的邮箱"为开头,然后配合上ssh-keygen命令一步一步引导直到项目clone到本地。但其实这里包含了两个知识点。前者是git项目配置,后者是ssh登录配置。

三个级别

  1. 仓库级别:针对项目配置,一般在++项目根目录++./git中配置。
  2. 全局级别:针对单个用户的全部仓库配置生效。优先级低于仓库级别。我们可以配置多个账号。于~/.gitconfig~/.config/git/config中配置。
  3. 系统级别:针对机器上全部仓库和用户生效。优先级低于全局级别。于/etc/gitconfig中配置。

如何设置

  • 通过git config --global user.email "你的邮箱" 命令配置当前系统登录账号下的git用户信息配置(全局配置)
  • 通过`git config user.email “你的邮箱” 完成系统级配置。
  • 通过`git config --local user.email “你的邮箱” 完成项目级配置。
  • 通过git config [null|--local|--global] user.email 可以查看相应级别的用户配置。

它的作用

  • 仅是用于提交代码时,保存你的昵称联系方式这样的信息。
  • 昵称user.name, 联系方式user.email。在代码的commit记录中可以看到。
SSH 登录不同代码平台实现代码管理

.ssh/config 这个文件是SSH登录过程中重要的选择依据。下面是博主的一份配置仅供参考。

Host github.com
    User git
    IdentityFile /root/.ssh/id_rsa
    IdentitiesOnly yes

Host gitee.com
    User git
    IdentityFile /root/.ssh/gitee
    IdentitiesOnly yes

当我们在执行git clone git@github.com/你的账号:你的私人代码库命令时SSH 会自动匹配host配置使用私钥/root/.ssh/id_rsa做身份验证。同理在拉取码云gitee的项目时也会自动使用另外一份密钥/root/.ssh/gitee
至此我们完成了在一台机器上使用不同账号拉取不同代码托管平台的诉求。

实验结果如下

/data
|-- gitee
|   `-- geektutu
|       |-- Day2
|       |-- Day3
|       |-- Day4
|       |-- LICENSE
|       `-- README.md
`-- github
    `-- note
        `-- README.md

怎么配置SSH

  1. 使用ssh-keygen -t rsa -C 'example@gmail.com' 生成不同账号的密钥并区分名字。
  2. 对于Github来说,你需要登录GIthub并且进入个人主页,找到 Settings -> SSH and GPG keys -> New SSH key 将你的 .ssh/xxx.pub 文件内容贴上去。
  3. 对于Gitee来说,难不倒你,自行研究。

更多拓展

http 的方式克隆项目,例如github项目

root@438aedd211ea:/data/http# git clone https://github.com/lv997/note.git
Cloning into 'note'...
Username for 'https://github.com': tty199
Password for 'https://tty199@github.com': 
remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/lv997/note.git/'

使用 http 克隆项目会被要求输入你的账号和密码,但是Github 于2021年8月13日停止支持使用账号密码拉取私人仓库,因此上面的克隆显示失败。取而代之的是使用token的方式替代。克隆命令如:
git clone https://x-access-token:your-token@github.com/your-username/your-repo.git
关于私人token的申请,参考其它文章。下面是使用私人token下载私人项目的例子。

git clone https://x-access-token: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@github.com/lv997/note.git/
Cloning into 'note'...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (4/4), done.
root@438aedd211ea:/data/github# ls
note

github 私人token申请

对比 http 和 ssh 两种克隆方式

HTTP方式

  • 认证方式:通常使用用户名和密码进行认证,或者使用个人访问令牌(Personal Access Token)。
  • 安全性:数据传输过程可以使用HTTPS进行加密,但默认情况下可能不如SSH安全。
  • 速度:HTTP克隆和推送的速度通常比SSH慢,因为它支持更多的网络请求类型。
  • 配置:相对简单,只需在GitHub账户中生成个人访问令牌,并在克隆或推送时使用该令牌即可。
  • 使用场景:适合对网络安全性要求不是特别高的场景,或者是那些对SSH协议有限制的网络环境。

SSH方式

  • 认证方式:使用SSH密钥对进行认证。用户需要在本地生成一对密钥(公钥和私钥),并将公钥添加到GitHub账户中。
  • 安全性:SSH提供了一种更为安全的认证方式,因为它基于密钥而不是密码。数据传输过程是加密的,相对更安全。
  • 速度:通常比HTTP快,尤其是在网络速度较慢的情况下。
  • 配置:配置稍微复杂一些,需要生成和管理SSH密钥,并将公钥添加到GitHub账户。
  • 使用场景:适合需要频繁操作仓库,或对安全性有较高要求的场景。

额外的参考.ssh/config参考例子

Host github
HostName github.com
User your_git_hub_name
IdentityFile ~/.ssh/github_rsa
PreferredAuthentications publickey # 意思是使用公钥和秘钥进行权限校验
 
Host gitlab
HostName https://gitee.com/lvtaiyu
User your_git_hub_name
IdentityFile ~/.ssh/gitee_rsa
PreferredAuthentications publickey
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值