作者:良知猶存
轉載授權以及圍觀:歡迎添加微信:Allen-Iverson-me-LYN
總述
GIT是當今熱門代碼管理技術,但是如此火的系統,竟然是大神林納斯花了兩週用C寫出來的一個分佈式版本控制系統。github就是依託git技術發展的當今世界最大的代碼管理平臺。
這麼好用的git教程也是很多,但是我因爲在工作中遇到需要在一臺電腦上實現公司git服務器和自己私人的遠程倉庫兩個賬戶的推送,看了好多篇文章,終於設置成功,覺得有些操作需要特別注意,遂寫這篇文章提示大家,希望可以幫助到大家,從安裝到使用一氣呵成。
繼上一篇文章繼續分享GIT的使用,git從安裝到多賬戶操作一套搞定(一)入門使用
四、GIT多賬號配置
ssh 方式鏈接到 Github/GitLab,需要唯一的公鑰,如果想同一臺電腦綁定兩個Github/GitLab 帳號,需要兩個條件:
-
能夠生成兩對 私鑰/公鑰
-
push 時,可以區分兩個賬戶,推送到相應的倉庫
解決方案:
1. 生成 私鑰/公鑰 時,密鑰文件命名避免重複
2. 設置不同 Host 對應同一 HostName 但密鑰不同
3. 取消 git 全局用戶名/郵箱設置,爲每個倉庫獨立設置 用戶名/郵箱
上一篇文章描述了一個賬號從生成rsa密鑰到推送到github倉庫的示例,按照上篇文章git從安裝到多賬戶操作一套搞定(一)入門使用我們繼續生成第二把密鑰,只不過這把密鑰需要特別的配置一下。
1>查看已有 密鑰
下輸入命令 ls ~/.ssh/
,看到 id_rsa
與 id_rsa_pub
則說明已經有一對密鑰。如下圖
2>生成新的公鑰,並命名爲 id_rsa_2 (保證與之前密鑰文件名稱不同即可,文件名最好有意義,否則寫後面的配置的時候寫錯文件名,我的文件名是id_rsa_ljy)
ssh-keygen -t rsa -f ~/.ssh/id_rsa_2 -C "[email protected]"
3>在 .ssh 文件夾下新建 config 文件並編輯,令不同 Host 實際映射到同一HostName,但密鑰文件不同。Host 前綴可自定義:
# default
Host 192.168.1.xx(自行按照IP配置)
HostName 192.168.1.xx(自行按照IP配置)
User git
IdentityFile ~/.ssh/id_rsa_2
# two
Hostieit.github.com
HostName github.com
User git
IdentityFile~/.ssh/id_rsa
參考文章:
https://blog.csdn.net/jifaliwo123/article/details/79126785
注意點:
-
在配置文件中的,IdentityFile文件位置是rsa密鑰,不是pub文件
-
提交代碼的時候,需要修改git config 可以之設置一個全局的user.email和user.name,然後需要不同的配置的倉庫,單獨設置
上一篇設置了--global user.name --global user.email
這次多賬戶使用需要設置,單獨的文件夾下面的郵箱與名稱,保證我們使用該文件夾下文件進行git操作的使用,對應的賬戶名和郵箱屬於除去主賬號之外的賬號。
//設置倉庫的user.email和user.name
gitconfig user.email"[email protected]"
gitconfig user.name "yeungeek"
開始在github 或者私有服務器設置公鑰 這部分上一篇也都描述很詳細。下面就用新的賬戶進行另一種方法的git上傳。
這裏我還是在github的截圖,因爲公司使用的保密性,所以我不進行展示,我只是表示用上面方法我成功進行了一臺pc兩個賬戶使用。
五、GIT多賬號使用
第二種方法 通過本地建立倉庫直接遠程上傳
echo "# Simple-red-black-tree" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add [email protected]:conscience-still/Simple-red-black-tree.git
git push -u origin master
新建一個README.md
$ git add . //添加到暫存倉庫
$ git commit -m "simple red-black tree" //添加上傳註釋
再次設置本文件夾下的用戶名和郵箱
在Github上創建好Git倉庫之後我們就可以和本地倉庫進行關聯了,根據創建好的Git倉庫頁面的提示,可以在本地Simple-red-black-tree倉庫的命令行輸
$ git remote add origin [email protected]:conscience-still/Simple-red-black-tree.git
關聯好之後我們就可以把本地庫的所有內容推送到遠程倉庫(也就是Github)上了,通過:
$ git push -u origin master
由於新建的遠程倉庫是空的,所以要加上-u這個參數,等遠程倉庫裏面有了內容之後,下次再從本地庫上傳內容的時候只需下面這樣就可以了:
$ git push origin master
至此就完成了將本地項目上傳到Github的整個過程。
另外,這裏有個坑需要注意一下,就是在上面第七步創建遠程倉庫的時候,如果你勾選了Initializethis repository with a README(就是創建倉庫的時候自動給你創建一個README文件),那麼到了第九步你將本地倉庫內容推送到遠程倉庫的時候就會報一個failedto push some refs to https://github.com/guyibang/TEST2.git的錯。
這是由於你新創建的那個倉庫裏面的README文件不在本地倉庫目錄中,這時我們可以通過以下命令先將內容合併如下:
$ git pull --rebase origin master
這時你再push就能成功了。
參考文章:
https://blog.csdn.net/Lucky_LXG/article/details/77849212
這就是我分享的git的基本操作,裏面過程都是實踐過的,很多地方都是邊學邊做,感謝很多博主的文章,好多也沒有直接交流, 只是在這裏表達一些感謝。如果大家有什麼更好的思路,歡迎分享交流哈。
更多分享,掃碼關注我