Git ssh方式設置兩個帳號A/B分別配置A--github和B--gitlab已更新

本文寫的針對Git有必定的基礎的使用者。初學的話能夠參考這個系列教程,還有git - 簡明指南html

首先說一下背景java

  1. 兩個郵箱 A@gmail.com/B@gmail.com,git

  2. 我有兩個git帳號,一個公司(github)A@gmail.com/,一個本身的(gitlab)B@gmail.comgithub

  3. 目標:提交公司任務到gitlab上,本身寫的代碼提交到github上shell

背景結束。windows

在git克隆(clone)是一般有兩種方式的連接,git@和https//bash

  • https方式須要每次都輸入帳號和密碼ssh

  • git@方式一次配置之後都不須要輸入密碼ide

還要說一點,我以爲對新手有幫助,就是git和github和gitlab的關係gitlab

git是基礎設施,github和gitlab是基礎上的建築物,他倆的方式都是同樣的。

就是說只要是你用git配置一下,而後能夠直接對github和gitlab進行操做。

咱們要作的目標只有一個,讓咱們在以SSH方式提交的時候郵箱和github或者gitlab對應上。下面開始正題。

  • 生成兩個ssh key

  • 把key添加到對應的網站設置裏

  • 新增並設置config

  • 測試是否鏈接成功

  • 對目標項目設置user.name和user.email

  1. 檢查是否設置了全局user.name、user.email,用如下命令取消

    1. git config --global --unset user.name

    2. git config --global --unset user.email

    3. 爲何要取消呢,由於咱們要把config調到項目級別,提交時識別的是郵箱,你設置了全局,怎麼提交都是用的全局設置啊(由於它判斷的依據是郵箱)

  2. 生成ssh key

    1. 生成key命令

      1. ssh-keygen -t rsa -C "your_email"
    2. 會提示你輸入文件名,你能夠輸入對應的網址的名稱好比,id_rsa_github,表示此key是對應的github網址

    3. 提示你輸入密碼,直接enter,確認密碼,直接enter,這樣不輸入密碼其實比較方便

    4. 這樣呢,你在b步驟中輸入文件名是的路徑就會出現你命名的key,有兩個密鑰,好比:id_rsa_github,id_rsa_github.pub

    5. 重複以上步驟生成id_rsa_gitlab的key

    6. 若是出現Could not open a connection to your authentication agent的錯誤,就試着先用如下命令:

      ssh-agent bash

      ssh-add id_rsa_xxx

  3. 把上面獲得的.pub結尾的key加到對應的網站設置裏,在github和gitlab里加ssh key我想大家必定能找到。

  4. 在生成的key的目錄下新建(有就不須要新建了)config文件,沒有後綴名,示例以下

    1. Host gitlab
      	HostName xxx.com
      	IdentityFile ~/.ssh/id_rsa_gitlab
      Host github
      	HostName github.com
      	IdentityFile ~/.ssh/id_rsa_github
    2. xxx.com是gitlab中你公司的地址,不是gitlab.com
      Host gitlab中的gitlab是別名,對應xxx.com
      IdentityFile ~/.ssh/id_rsa_gitlab xxx.com對應的ssh key文件名,沒有.pub後綴
  5. 測試鏈接是否成功

    1. ssh -T git@gitlab
      Welcome to GitLab, xxx
    2. ssh -T git@github
      hi xxx You've successfully authenticated, but GitHub does not provide shell access.
  6. 這就寫完了。可能你會說擱我倆這扯犢子呢,那它到底怎麼分辨誰是誰的!確實還少了一步,剛開始始我也很迷惑,後來也算搞明白了,還有一步須要設置一下,那就是單獨設置項目下的user.name和user.email(還記得剛開始取消全局嗎,這就是要用到的地方了)

    1. 你有一個項目叫test

    2. git config user.nam "your name"

    3. git config useremail "A@gmail.com"

    4. 查看config,git config -l,若是隻看到一個user.name和user.email那就對了,若是有倆說明你的全局還在呢,取消掉取消掉取消掉

  7. 總結一下吧,代碼到底怎麼找到的家。(公司--git,冰箱--github/gitlab)

    1. 公司有兩個冰箱,一個放吃的,另外一個也放吃的。

    2. 先把冰箱和key對應(找到公司的其中一個冰箱)

    3. 項目單獨設置對應的user.name和user.email(打開冰箱)

    4. 關上冰箱門(這步沒有!!!)

重要提醒

windows用戶在添加了ssh-add id_xxx以後重啓命令行,添加到系統的鑰匙串id_xxx會消失,因此若是你關閉後重啓命令行

請再次執行 2.6 步驟,我暫時沒找到解決辦法,若有大神知道,請告知一二,謝謝

相關文章
相關標籤/搜索