设为首页 收藏本站
查看: 742|回复: 0

[经验分享] 【Git笔记】怎样在同主机同账户下实现多个gitlab帐号管理各自的remote repo

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2018-1-11 23:34:54 | 显示全部楼层 |阅读模式
  我们可能会遇到以下的场景:
  
1)多人共用同一台Linux开发机,该开发机仅仅有一个共用的work帐号,非常多人都用这个帐号登录主机进行日常开发。
  
2)该work帐号下统一安装了gitclient供多人使用。
  
3)项目採用gitlab进行云端代码托管;
  
4)每一个开发人员均使用自己的gitlab帐号进行版本号管理。
  在上面的场景下,须要解决一个问题:
  
在同主机且共用工作帐号的情况下。怎样使用各自的gitlab帐号提交自己负责的代码?
  以下的步骤能够解决问题。
1. 为每一个人生成各自的ssh key
  比如,假设我以slvher@gmail.com作为gitlab的注冊邮箱,则以下的步骤可为这个gitlab帐号生成ssh key:
  

  

  

  

$ cd ~/.ssh && mkdir git  
$ ssh-keygen -t rsa -C "slvher@gmail.com" ## 注意:须要指定保存ssh key的文件为~/.ssh/git/id_rsa.slvher
  
$ cat git/id_rsa.slvher.pub
  
将cat出来的ssh key的内容(不包含"slvher@gmail.com")通过gitlab web管理界面加入到ssh key配置项中,这里不赘述。
  

  

  假如在同机器同帐号下另一个名叫”sky”的人,他也依照上述步骤用他的gitlab注冊email生成了自己的ssh key保存至~/.ssh/git/id_rsa.sky,且在gitlab web界面上完毕配置。
  此时,面临的问题是:
  
1)假设在~/.gitconfig的[user] section中配置全局的user.email / user.name,则无法满足每人用各自的帐号进行版本号管理的需求,显然不可行。
  
2)假设每一个project师负责的项目用各自的帐号进行提交(即在每一个项目的作用域内配置user.email / user.name)。那么,git push至remote时,机器怎样选择该项目相应的ssh key进行权限验证?
  这个问题能够通过在~.ssh/config文件里配置gitlab.com的host alias来解决。
2. 用~/.ssh/config文件管理多个ssh key
  

  

  

  

$ cd ~/.ssh  
$ vi config
  

  

  针对用户slvher和tom的gitlab ssh key。配置例如以下内容:
  

  

  

  

Host gitlab.slvher  Hostname gitlab.com
  User git
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/git/id_rsa.slvher
  

  
Host gitlab.sky
  Hostname gitlab.com
  User git
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/git/id_rsa.sky
  

  

  上述配置中,Host是Hostname的别名(alias)。比方,假设远程的git repo地址为git@gitlab.com:slvher/multi-user.git,则在本地机器通过git@gitlab.slvher:slvher/multi-user.git也能訪问到同一个repository,由于我们配置了gitlab.slvher是gitlab.com的别名。
  当然,在alias与real host互通之前。须要事先做些工作,以下进行简述。
3. 怎样将remote repo url中的domain设置为其别名
  两个办法:
  
1)假设本地还没有project。则通过git clone项目时,能够用host alias的url,比方本来应该是:
  

  

$ git clone git@gitlab.com:slvher/multi-user.git  

  

  则其别名形式为:
  

  

  

  

$ git clone git@gitlab.slvher:slvher/multi-user.git  

  

  由于git@会走ssh协议,所以~/.ssh/config中的配置使得机器能够识别gitlab.slvher这个别名。
  2)假设本地project已经与remote repo相关联,则能够通过git remote set-url来又一次设置与本地project关联的remote repo url。以下的步骤供參考。
  

  

  

  

$ git remote -v  ## 显示当前与本地项目关联的remote repo url  

  

  输出例如以下:
  
origin  git@gitlab.com:slvher/multi-user.git (fetch)
  
origin  git@gitlab.com:slvher/multi-user.git (push)
  

  

  

  

$ git remote set-url origin git@gitlab.slvher:slvher/multi-user.git  
$ git remote -v
  

  

  此时,输出例如以下:
  
origin  git@gitlab.slvher:slvher/multi-user.git (fetch)
  
origin  git@gitlab.slvher:slvher/multi-user.git (push)
  採用上述方法将gitlab host的别名设置成功后,仅仅要为每一个project配置好owner的user.email和user.name,同主机同帐号下的多个开发人员就能够用各自的gitlab帐号管理各自负责的项目了。
  上述方法相同适用于github。
參考资料:
[1] One command github accounts switch

  =================== EOF =================

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-434109-1-1.html 上篇帖子: 一键部署基于GitLab的自托管Git项目仓库 下篇帖子: 完全卸载删除gitlab
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表