上一節中我們把在GitHub上建立的倉庫設定成了遠端倉庫,并向這個倉庫push了feature-D分支。現在,所有能夠通路這個倉庫的人都可以擷取feature-D分支并加以修改。
本節中我們從實際開發者角度出發,在另一個目錄下建立一個本地倉庫,學習從遠端倉庫擷取内容的相關操作。這就相當于我們剛剛執行過push操作的目标倉庫又有了另一名新開發者來共同開發。
擷取遠端倉庫
git clone
首先我們換到其他目錄下,将GitHub上的倉庫clone到本地。注意不要與之前操作的倉庫在同一目錄下。
$ git clone [email protected]:weirubo/git-learn.git
Cloning into 'git-learn'...
remote: Counting objects: 23, done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 23 (delta 3), reused 23 (delta 3), pack-reused 0
Receiving objects: 100% (23/23), done.
Resolving deltas: 100% (3/3), done.
Checking connectivity... done.
$ cd git-learn/
執行git clone指令後我們會預設處于master分支下,同時系統會自動将origin設定成該遠端倉庫的辨別符。也就是說,目前本地倉庫的master分支與GitHub端遠端倉庫(origin)的master分支在内容上是完全相同的。
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/feature-D
remotes/origin/master
我們用git branch -a指令檢視目前分支的相關資訊。添加-a參數可以同時顯示本地倉庫和遠端倉庫的分支資訊。
結果中顯示了remotes/origin/feature-D,證明我們的遠端倉庫中已經有了feature-D分支。
擷取遠端倉庫的feature-D分支
我們試着将feature-D分支擷取至本地倉庫
$ git checkout -b feature-D origin/feature-D
Branch feature-D set up to track remote branch feature-D from origin.
Switched to a new branch 'feature-D'
-b參數的後面是本地倉庫中建立分支的名稱。為了便于了解,我們仍然将其命名為feature-D,讓它與遠端倉庫的對應分支保持同名。建立分支名稱後面是擷取來源的分支名稱。例子中指定了origin/feature-D,就是說以後名為origin的倉庫(這裡隻GitHub端的倉庫)的feature-D分支為來源,在本地倉庫中建立feature-D分支。
向本地的feature-D分支送出更改
現在假定我們是另一名開發者,要做一個新的送出。在README.md檔案中添加一行文字。
Git Learn
#Git學習
feature-A
fix-B
feature-C
feature-D
檢視更改:
$ git diff
diff --git a/README.md b/README.md
index 1fdef41..61c9b62 100644
--- a/README.md
+++ b/README.md
@@ -4,3 +4,4 @@ Git Learn
feature-A
fix-B
feature-C
+feature-D
按照之前學過的方式送出即可。
$ git commit -am "Add feature-D"
[feature-D 6a0de29] Add feature-D
1 file changed, 1 insertion(+)
推送feature-D分支
現在來推送feature-D分支。
$ git push
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 284 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:weirubo/git-learn.git
ed3fa4d..6a0de29 feature-D -> feature-D
從遠端倉庫擷取feature-D分支,在本地倉庫中送出更改,再将feature-D分支推送回遠端倉庫,通過這一系列操作,就可以與其他開發者互相合作,共同培育feature-D分支,實作某些功能。
擷取最新的遠端倉庫分支
git pull
現在我們放下剛剛操作的目錄,回到原先的那個目錄下。這邊的本地倉庫中隻建立了feature-D分支,并沒有在feature-D分支中進行任何送出。然而遠端倉庫的feature-D分支中已經有了我們剛剛推送的送出。這時我們就可以使用git pull指令,将本地的feature-D分支更新到最新狀态。目前分支為feature-D分支。
$ git pull origin feature-D
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From github.com:weirubo/git-learn
* branch feature-D -> FETCH_HEAD
ed3fa4d..6a0de29 feature-D -> origin/feature-D
Updating ed3fa4d..6a0de29
Fast-forward
README.md | 1 +