git clone
克隆遠程倉庫默認是只克隆master
分支,當想把遠程倉庫上的所有的分支都克隆下來的話,有以下幾種方法。
使用遠程倉庫github上的LSMLIB倉庫為例.該倉庫在github上一共有三個分支:master(default)
,dev-samrai
,dev
.
在使用git
的過程中都使用ssh
協議進行傳輸,可以進行免密登錄。
方法一
-
使用
git clone
克隆倉庫,默認克隆下來的遠程倉庫的整個倉庫,但是只會在本地創建一個master
分支。git clone git@github.com:ktchu/LSMLIB.git
-
查看克隆下來代碼的分支情況,同時可以查看遠程倉庫的分支情況。
git branch -a # 查看所有的分支(包括本地分支和遠程分支) * master remotes/origin/HEAD -> origin/master remotes/origin/dev remotes/origin/dev-samrai remotes/origin/master
可以看出遠程倉庫一共有三個分支(
remotes/origin/dev
,remotes/origin/dev-samrai
,remotes/origin/master
),並且遠程倉庫的HEAD
指針目前指向的是remotes/origin/master
分支。 -
新建兩個本地分支與遠程分支相同。
git checkout -b dev origin/dev #本地新建一個分支(dev),並且切換到該分支 與遠程分支(origin/dev)對應 git checkout -b dev-samrai origin/dev-samrai # 同理
當新建完對應的分支,並且切換回來后,發現本地的對應
工作區
的內容已經同步成對應分支的內容了。說明
git clone
克隆了所有的數據,只是需要將對應的分支形成接口,切換成對應的分支數據了。
方法二
使用如下命令,其實與上面的操作是類似的,在本地倉庫下,新建分支與遠程倉庫的分支一一對應,然后進行同步所有分支即可。
git clone git@github.com: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