使用git branch dev
創(chuàng)建本地倉庫分支dev氮凝,我們平時在dev分支上工作们豌,而master作為主分支树碱,我們不動它交惯。在合并到master分支前次泽,不管在dev分支上如何操作,都不會影響到主分支商玫。當dev分支合并到master分支箕憾,我們刪除dev分支,準備推送到遠程倉庫拳昌。在推送到遠程倉庫前袭异,通過上篇版本穿梭的有效命令行,可以進行版本切換回退炬藤、撤銷修改御铃、刪除文件等操作,從而避免文件丟失的問題沈矿。
GitHub
通過SSH加密本地Git倉庫和GitHub倉庫之間的傳輸:
- 創(chuàng)建SSH Key
$ ssh-keygen -t rsa -C "youremail@example.com"
- 在用戶主目錄里找到
.ssh
目錄上真,里面有id_rsa
和id_rsa.pub
兩個文件,這兩個文件是SSH Key的秘鑰對羹膳,id_rsa
是私鑰睡互,id_rsa.pub
是公鑰 - 登錄GitHub,添加SSH Key,在Key文本框里粘貼
id_rsa.pub
文件里的內容
GitLab
GitLab作為Git服務端部署在公司一臺閑置電腦上就珠,類似于服務器寇壳,用于托管公司研發(fā)項目。
SSH
SSH妻怎,是一個加密驗證連接的方式壳炎,很多遠程連接操作使用SSH。SSH和https比逼侦,更加安全匿辩,使用Git協議速度更快。
生成SSH秘鑰
- 未使用使用生成過SSH秘鑰
ssh-keygen -t rsa -C "your_email@example.com"
- 找到
.ssh
目錄下的兩個文件榛丢,分別是id_rsa
和id_rsa.pub
id_rsa
id_rsa.pub
- 如果有過關聯其他服務器的SSH密鑰铲球,且需要同當前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
- 對于原SSH也可以用這種方式分配路徑睬辐。同時,這種方法也可以用來配置多GitHub賬戶宾肺。比如說同一設備同時使用GitLab和GitHub時需要在config里分配路徑溯饵。
配置多GitHub賬戶
- 首先找到
.ssh
文件,文件中包括github
锨用、github.pub
丰刊、gitlab
、gitlab.pub
增拥、known_hosts
等文件 - 添加
config
文件啄巧,對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間存在映射關系掌栅,所以需要重新關聯遠程倉庫
- 首先
cd 文件夾
- 然后與遠程倉庫取消關聯
git remote rm origin
- 最后重新關聯遠程倉庫
git remote add origin git@gitlab.com:far/gitGuide.git
GitLab中配置公鑰
打開id_rsa.pub
復制公鑰秩仆,粘貼到GitLab中的個人資料設置/SSH密鑰里面。
測試SSH連接
ssh -T git@192.168.2.156
如果配置多SSH,直接可以使用gitlab.com測試猾封,即
ssh -T git@192.168.2.156
如果測試成功會出現
Welcome to GitLab, USERNAME!
添加遠程庫
本地倉庫關聯遠程倉庫
git remote add origin git@github.com:far/learngit.git
把本地倉庫的內容推送到GitHub倉庫
$ 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.
把本地庫的內容推送到遠程澄耍,用git push
命令,實際上是把當前分支master推送到遠程晌缘。
由于遠程庫是空的齐莲,我們第一次推送master分支時,加上了-u參數磷箕,Git不但會把本地的master分支內容推送的遠程新的master分支选酗,還會把本地的master分支和遠程的master分支關聯起來,在以后的推送或者拉取時就可以簡化命令岳枷。
$ git push origin master
在第一次推送到遠程后芒填,以后都用git push origin master
命令呜叫,把本地master分支的最新修改推送至GitHub。
從遠程庫克隆
從遠程庫克隆一個倉庫殿衰,首先要知道該遠程倉庫的地址怀偷,然后再使用git clone
命令進行克隆。
Git支持多種協議播玖,包括https,但是ssh支持原生的git協議速度最快饭于。
$ git clone git@github.com:far/gitskills.git