1. 程式人生 > 實用技巧 >git pull 和 git fetch 區別

git pull 和 git fetch 區別

git fetch是將遠端主機的最新內容拉到本地,並不自動合併到當前工作分支,使用者在檢查了以後決定是否合併到工作本機分支中。

git pull則是將遠端主機的最新內容拉下來後直接合並,這樣可能會產生衝突,需要手動解決。

參考:https://www.cnblogs.com/runnerjack/p/9342362.html

git fetch:

這時候我們本地相當於儲存了兩個程式碼的版本號,我們還要通過merge去合併這兩個不同的程式碼版本,如果這兩個版本都修改了同一處的程式碼,這時候merge就會出現衝突,然後我們解決衝突之後就生成了一個新的程式碼版本。

而git pull就很直接:

1、git fetch:拉取遠端資料到本地倉庫

缺點:會拉取當前專案的所有分支的commit

$ git fetch
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (6/6), done.
From https://github.com/xxxxxxxxxx
   7c5a386..b008b08  abc        -> origin/abc
   ff47932..6f28960  master     
-> origin/master

參考:https://blog.csdn.net/Mooner_guo/article/details/49674497

2、git fetch origin abc: 拉取遠端的abc分支的資料,不會拉取所有分支

(origin是clone時建立的標籤字,它預設指向遠端程式碼庫,參考:https://www.zhihu.com/question/27712995

注意:

git pull 並不是完全等於 git fetch+git merge,原因:

git pull 會直接將本地的程式碼更新至遠端倉庫裡面最新的程式碼版本,commitID 都是2

git fetch 之後 git merge,如果遇到了衝突就會生成的新版本,這時候commitID 為 3

參考:https://cloud.tencent.com/developer/article/1560347