下載同步更新 Pull
在協同合作時,專案進度有可能會比自己本地端的專案進度還前面,這時候我們可以用 git pull
來將遠端的進度拉回本地端更新,而在介紹 git pull
之前我們先來介紹 git fetch
。
Fetch 取得遠端資料庫進度
假設我們在別的地方更新了專案進度,並使用 git push
推上了 GitHub,這時我們本地端的進度和遠端資料庫的進度不一樣,這時我們可以使用 git fetch
將遠端資料庫的進度拉回來:
$ git fetch
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 2 (delta 0), reused 1 (delta 0), pack-reused 0
Unpacking objects: 100% (2/2), 615 bytes | 615.00 KiB/s, done.
From github.com:calon719/test
d38d93f..b36e354 master -> origin/master
執行完後會返回一個 FETCH_HEAD,我們可以用 git log
來檢視一下 FETCH_HEAD:
git log --oneline -p FETCH_HEAD
bf020f5 (origin/master) Create newREADME.md
diff --git a/newREADME.md b/newREADME.md
new file mode 100644
index 0000000..9daeafb
--- /dev/null
+++ b/newREADME.md
@@ -0,0 +1 @@
+test
5ba01be (HEAD -> master) 初始版本
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..9daeafb
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+test
再來檢視一下 master 分支的 commit 紀錄來和 FETCH_HEAD 比對:
5ba01be (HEAD -> master) 初始版本
可以發現 FETCH_HEAD 比本地端的 master 分支多一個 bf020f5 紀錄,那我們該怎麼把本地端的 master 分支進度追上 FETCH_HEAD 呢?其實跟之前合併分支時一樣只要使用 git merge
,而我們要合併的分支名稱為 origin/master:
$ git merge origin/master
Updating 5ba01be..bf020f5
Fast-forward
newREADME.md | 1 +
1 file changed, 1 insertion(+)
create mode 100644 newREADME.md
Pull 下載同步更新
而為什麼要先介紹 git fetch
呢?這是因為 git pull
其實就是:
git fetch
+ git merge
= git pull
當我們執行 git pull
時,這個指令會幫我們從遠端取得遠端進度並且合併回分支裡面。
我們在 GitHub 在新增一個檔案來讓兩邊進度不一樣,然後我們這次使用 git pull
來將遠端進度同步到本地端上:
$ git pull
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 654 bytes | 654.00 KiB/s, done.
來自 github.com:calon719/test
bf020f5..0d8c254 master -> origin/master
Updating bf020f5..0d8c254
Fast-forward
test.md | 1 +
1 file changed, 1 insertion(+)
create mode 100644 test.md
可以發現上面的訊息就是 git fetch
和 git merge
兩個指令執行時的訊息。
將 Repository 從 Server 上下載回來
接下來我們要來介紹 git clone
,今天當我們不小心把整個專案目錄弄丟或是想要將別人的專案下載回來,這時我們可以使用 git clone
。
首先我們到想要下載回來的專案頁面上,接下來點擊下圖中的 Code 按鈕:
我們可以選擇要使用 HTTPS 或是 SSH 下載,我們只要將這串放到 git clone
的指令的後面:
$ git clone https://github.com/calon719/test.git
Cloning into 'test'...
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 8 (delta 1), reused 3 (delta 0), pack-reused 0
Receiving objects: 100% (8/8), done.
Resolving deltas: 100% (1/1), done.
參考資料
- 高見龍,《為你自己學 Git》