Git使用總結(jié)四:遠(yuǎn)程倉(cāng)庫(kù)


使用git branch dev創(chuàng)建本地倉(cāng)庫(kù)分支dev,我們平時(shí)在dev分支上工作,而master作為主分支,我們不動(dòng)它。在合并到master分支前,不管在dev分支上如何操作,都不會(huì)影響到主分支。當(dāng)dev分支合并到master分支,我們刪除dev分支,準(zhǔn)備推送到遠(yuǎn)程倉(cāng)庫(kù)。在推送到遠(yuǎn)程倉(cāng)庫(kù)前,通過上篇版本穿梭的有效命令行,可以進(jìn)行版本切換回退、撤銷修改、刪除文件等操作,從而避免文件丟失的問題

GitHub

通過SSH加密本地Git倉(cāng)庫(kù)和GitHub倉(cāng)庫(kù)之間的傳輸:

  • 創(chuàng)建SSH Key
$ ssh-keygen -t rsa -C "youremail@example.com"
  • 在用戶主目錄里找到.ssh目錄,里面有id_rsaid_rsa.pub兩個(gè)文件,這兩個(gè)文件是SSH Key的秘鑰對(duì),id_rsa是私鑰,id_rsa.pub是公鑰
  • 登錄GitHub,添加SSH Key,在Key文本框里粘貼id_rsa.pub文件里的內(nèi)容

GitLab

GitLab作為Git服務(wù)端部署在公司一臺(tái)閑置電腦上,類似于服務(wù)器,用于托管公司研發(fā)項(xiàng)目。

SSH

SSH,是一個(gè)加密驗(yàn)證連接的方式,很多遠(yuǎn)程連接操作使用SSH。SSH和https比,更加安全,使用Git協(xié)議速度更快。

生成SSH秘鑰

  • 未使用使用生成過SSH秘鑰
ssh-keygen -t rsa -C "your_email@example.com"
  • 找到.ssh目錄下的兩個(gè)文件,分別是id_rsaid_rsa.pub
id_rsa
id_rsa.pub
  • 如果有過關(guān)聯(lián)其他服務(wù)器的SSH密鑰,且需要同當(dāng)前GitLab隔離
ssh-keygen -t rsa -C "YOUR_EMAIL@YOUREMAIL.COM" -f ~/.ssh/gitlab
  • 最后的“gitlab”即為自定義的SSH文件名,然后再.ssh文件夾中創(chuàng)建config文件,在其中輸入
gitlab (如果郵箱不同也可在此處注釋)
Host gitlab.com
HostName 192.168.2.156
User git
IdentityFile ~/.ssh/gitlab
  • 對(duì)于原SSH也可以用這種方式分配路徑。同時(shí),這種方法也可以用來配置多GitHub賬戶。比如說同一設(shè)備同時(shí)使用GitLab和GitHub時(shí)需要在config里分配路徑。

配置多GitHub賬戶

  • 首先找到.ssh文件,文件中包括github、github.pub、gitlab、gitlab.pubknown_hosts等文件
  • 添加config文件,對(duì)SSH分配路徑,如下所示
 # gitlab
Host gitlab.com
HostName 192.168.2.156
User git
IdentityFile ~/.ssh/gitlab
 # github
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/github
  • 由于192.168.2.156與gitlab.com間存在映射關(guān)系,所以需要重新關(guān)聯(lián)遠(yuǎn)程倉(cāng)庫(kù)
  • 首先cd 文件夾
  • 然后與遠(yuǎn)程倉(cāng)庫(kù)取消關(guān)聯(lián)
git remote rm origin 
  • 最后重新關(guān)聯(lián)遠(yuǎn)程倉(cāng)庫(kù)
git remote add origin git@gitlab.com:far/gitGuide.git 

GitLab中配置公鑰

打開id_rsa.pub復(fù)制公鑰,粘貼到GitLab中的個(gè)人資料設(shè)置/SSH密鑰里面。

測(cè)試SSH連接

ssh -T git@192.168.2.156

如果配置多SSH,直接可以使用gitlab.com測(cè)試,即

ssh -T git@192.168.2.156

如果測(cè)試成功會(huì)出現(xiàn)

Welcome to GitLab, USERNAME!

添加遠(yuǎn)程庫(kù)

本地倉(cāng)庫(kù)關(guān)聯(lián)遠(yuǎn)程倉(cāng)庫(kù)

git remote add origin git@github.com:far/learngit.git

把本地倉(cāng)庫(kù)的內(nèi)容推送到GitHub倉(cāng)庫(kù)

$ git push -u origin master
Counting objects: 19, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (19/19), done.
Writing objects: 100% (19/19), 13.73 KiB, done.
Total 23 (delta 6), reused 0 (delta 0)
To git@github.com:far/learngit.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

把本地庫(kù)的內(nèi)容推送到遠(yuǎn)程,用git push命令,實(shí)際上是把當(dāng)前分支master推送到遠(yuǎn)程。
由于遠(yuǎn)程庫(kù)是空的,我們第一次推送master分支時(shí),加上了-u參數(shù),Git不但會(huì)把本地的master分支內(nèi)容推送的遠(yuǎn)程新的master分支,還會(huì)把本地的master分支和遠(yuǎn)程的master分支關(guān)聯(lián)起來,在以后的推送或者拉取時(shí)就可以簡(jiǎn)化命令。

$ git push origin master

在第一次推送到遠(yuǎn)程后,以后都用git push origin master命令,把本地master分支的最新修改推送至GitHub。

從遠(yuǎn)程庫(kù)克隆

從遠(yuǎn)程庫(kù)克隆一個(gè)倉(cāng)庫(kù),首先要知道該遠(yuǎn)程倉(cāng)庫(kù)的地址,然后再使用git clone命令進(jìn)行克隆。
Git支持多種協(xié)議,包括https,但是ssh支持原生的git協(xié)議速度最快。

$ git clone git@github.com:far/gitskills.git
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容