git pull 和 git fetch 區別
阿新 • • 發佈:2020-10-16
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