天天看點

Git學習之從遠端倉庫擷取(七)

上一節中我們把在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 +