Git02-Git遠端倉庫
常用的託管服務[遠端倉庫]
註冊碼雲
要想使用碼雲的相關服務,需要註冊賬號(地址: https://gitee.com/signup )
前面我們已經知道了Git中存在兩種型別的倉庫,即本地倉庫和遠端倉庫。那麼我們如何搭建Git遠端倉庫呢?我們可以藉助網際網路上提供的一些程式碼託管服務來實現,其中比較常用的有GitHub、碼雲、GitLab等。 gitHub( 地址:https://github.com/ )是一個面向開源及私有軟體專案的託管平臺,因為只支援Git 作為唯一的版本庫格式進行託管,故名gitHub 碼雲(地址: https://gitee.com/ )是國內的一個程式碼託管平臺,由於伺服器在國內,所以相比於GitHub,碼雲速度會更快 GitLab (地址: https://about.gitlab.com/ )是一個用於倉庫管理系統的開源專案,使用Git作為程式碼管理工具,並在此基礎上搭建起來的web服務,一般用於在企業、學校等內部網路搭建git私服。
建立遠端倉庫
倉庫建立完成後可以看到倉庫地址,如下圖所示:
配置SSH公鑰
生成SSH公鑰
- ssh-keygen -t rsa
- 不斷回車
如果公鑰已經存在,則自動覆蓋
Gitee設定賬戶共公鑰
- 獲取公鑰
cat ~/.ssh/id_rsa.pub
驗證是否配置成功
- ssh -T [email protected]
操作遠端倉庫
新增遠端倉庫
此操作是先初始化本地庫,然後與已建立的遠端庫進行對接。
命令: git remote add <遠端名稱> <倉庫路徑>
- 遠端名稱,預設是origin,取決於遠端伺服器設定
- 倉庫路徑,從遠端伺服器獲取此URL
例如: git remote add origin
檢視遠端倉庫
- 命令:git remote
推送到遠端倉庫
命令:git push [-f] [--set-upstream] [遠端名稱 [本地分支名][:遠端分支名] ]
-
如果遠端分支名和本地分支名稱相同,則可以只寫本地分支
-
git push origin master
-
-f 表示強制覆蓋
-
--set-upstream
推送到遠端的同時並且建立起和遠端分支的關聯關係。- git push --set-upstream origin master
-
如果當前分支已經和遠端分支關聯,則可以省略分支名和遠端名。
-
git push 將master分支推送到已關聯的遠端分支。
查詢遠端倉庫
本地分支與遠端分支的關聯關係
檢視關聯關係我們可以使用 git branch -vv 命令
從遠端倉庫克隆
如果已經有一個遠端倉庫,我們可以直接clone到本地。
命令: git clone <倉庫路徑> [本地目錄]
本地目錄可以省略,會自動生成一個目錄
從遠端倉庫中抓取和拉取
遠端分支和本地的分支一樣,我們可以進行merge操作,只是需要先把遠端倉庫裡的更新都下載到本地,再進行操作。
抓取 命令:git fetch [remote name] [branch name]
抓取指令就是將倉庫裡的更新都抓取到本地,不會進行合併
如果不指定遠端名稱和分支名,則抓取所有分支。
拉取 命令:git pull [remote name] [branch name]
拉取指令就是將遠端倉庫的修改拉到本地並自動進行合併,等同於fetch+merge
如果不指定遠端名稱和分支名,則抓取所有並更新當前分支。
- 在test01這個本地倉庫進行一次提交併推送到遠端倉庫
- 在另一個倉庫將遠端提交的程式碼拉取到本地倉庫
解決合併衝突
在一段時間,A、B使用者修改了同一個檔案,且修改了同一行位置的程式碼,此時會發生合併衝突。
A使用者在本地修改程式碼後優先推送到遠端倉庫,此時B使用者在本地修訂程式碼,提交到本地倉庫後,也需要推送到遠端倉庫,此時B使用者晚於A使用者,故需要先拉取遠端倉庫的提交,經過合併後才能推送到遠端分支,如下圖所示。
在B使用者拉取程式碼時,因為A、B使用者同一段時間修改了同一個檔案的相同位置程式碼,故會發生合併衝突。
遠端分支也是分支,所以合併時衝突的解決方式也和解決本地分支衝突相同相同,在此不再贅述,需要讀者自己練習。
練習:遠端倉庫操作
##########################1-將本地倉庫推送到遠端倉庫
# 完成4.1、4.2、4.3、4.4的操作
略
# [git_test01]新增遠端倉庫
git remote add origin [email protected]/**/**.git
# [git_test01]將master分支推送到遠端倉庫,並與遠端倉庫的master分支繫結關聯關係
git push --set-upstream origin master
###########################2-將遠端倉庫克隆到本地
# 將遠端倉庫克隆到本地git_test02目錄下
git clone [email protected]/**/**.git git_test02
# [git_test02]以精簡的方式顯示提交記錄
git-log
###########################3-將本地修改推送到遠端倉庫
# [git_test01]建立檔案file03.txt
略
# [git_test01]將修改加入暫存區並提交到倉庫,提交記錄內容為:add file03
git add .
git commit -m 'add file03'
# [git_test01]將master分支的修改推送到遠端倉庫
git push origin master
###########################4-將遠端倉庫的修改更新到本地
# [git_test02]將遠端倉庫修改再拉取到本地
git pull
# 以精簡的方式顯示提交記錄
git-log
# 檢視檔案變化(目錄下也出現了file03.txt)
略