1. 程式人生 > 其它 >Git02-Git遠端倉庫

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

驗證是否配置成功

操作遠端倉庫

新增遠端倉庫

此操作是先初始化本地庫,然後與已建立的遠端庫進行對接。

命令: git remote add <遠端名稱> <倉庫路徑>

  • 遠端名稱,預設是origin,取決於遠端伺服器設定
  • 倉庫路徑,從遠端伺服器獲取此URL

例如: git remote add origin

https://gitee.com/czbk_zhang_meng/git_test.git

檢視遠端倉庫

  • 命令: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

如果不指定遠端名稱和分支名,則抓取所有並更新當前分支。

  1. 在test01這個本地倉庫進行一次提交併推送到遠端倉庫
  1. 在另一個倉庫將遠端提交的程式碼拉取到本地倉庫

解決合併衝突

在一段時間,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)
略