1. 程式人生 > 其它 >git同步遠端倉庫的所有分支

git同步遠端倉庫的所有分支

git clone克隆遠端倉庫預設是隻克隆master分支,當想把遠端倉庫上的所有的分支都克隆下來的話,有以下幾種方法。

使用遠端倉庫github上的LSMLIB倉庫為例.該倉庫在github上一共有三個分支:master(default),dev-samrai,dev.

在使用git的過程中都使用ssh協議進行傳輸,可以進行免密登入。

方法一

  1. 使用 git clone克隆倉庫,預設克隆下來的遠端倉庫的整個倉庫,但是隻會在本地建立一個master分支。

    git clone [email protected]:ktchu/LSMLIB.git
    
  2. 檢視克隆下來程式碼的分支情況,同時可以檢視遠端倉庫的分支情況。

    git branch -a    # 檢視所有的分支(包括本地分支和遠端分支)
    * master
      remotes/origin/HEAD -> origin/master
      remotes/origin/dev
      remotes/origin/dev-samrai
      remotes/origin/master
    

    可以看出遠端倉庫一共有三個分支(remotes/origin/devremotes/origin/dev-samrairemotes/origin/master),並且遠端倉庫的HEAD指標目前指向的是remotes/origin/master分支。

  3. 新建兩個本地分支與遠端分支相同。

    git checkout -b dev origin/dev #本地新建一個分支(dev),並且切換到該分支 與遠端分支(origin/dev)對應
    git checkout -b dev-samrai origin/dev-samrai # 同理
    

當新建完對應的分支,並且切換回來後,發現本地的對應工作區的內容已經同步成對應分支的內容了。

說明git clone克隆了所有的資料,只是需要將對應的分支形成介面,切換成對應的分支資料了。

方法二

使用如下命令,其實與上面的操作是類似的,在本地倉庫下,新建分支與遠端倉庫的分支一一對應,然後進行同步所有分支即可。

git clone [email protected]:ktchu/LSMLIB.git
cd LSMLIB
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all

參考連結

  1. git從遠端倉庫中獲取所有分支

  2. git從遠端倉庫獲取所有分支

  3. How to clone all remote branches in Git