詳解git fetch與git pull的區別

2021-08-23 12:07:22 字數 1221 閱讀 5883

git fetch和git pull都可以將遠端倉庫更新至本地那麼他們之間有何區別?想要弄清楚這個問題有有幾個概念不得不提。

fetch_head: 是乙個版本鏈結,記錄在本地的乙個檔案中,指向著目前已經從遠端倉庫取下來的分支的末端版本。 

commit-id:在每次本地工作完成後,都會做乙個git commit 操作來儲存當前工作到本地的repo, 此時會產生乙個commit-id,這是乙個能唯一標識乙個版本的序列號。 在使用git push後,這個序列號還會同步到遠端倉庫。

有了以上的概念再來說說git fetch 

git fetch:這將更新git remote 中所有的遠端倉庫所包含分支的最新commit-id, 將其記錄到.git/fetch_head檔案中 

git fetch更新遠端倉庫的方式如下:

git fetch origin master:tmp 

git diff tmp

git merge tmp

//合併temp分支到本地的master分支

git branch -d temp

//如果不想保留temp分支 可以用這步刪除

(1)如果直接使用git fetch,則步驟如下:

(2)git fetch origin 

只是手動指定了要fetch的remote。在不指定分支時通常預設為master 

(3)git fetch origin dev 

指定遠端remote和fetch_head,並且只拉取該分支的提交。

git pull: 首先,基於本地的fetch_head記錄,比對本地的fetch_head記錄與遠端倉庫的版本號,然後git fetch 獲得當前指向的遠端分支的後續版本的資料,然後再利用git merge將其與本地的當前分支合併。所以可以認為git pull是git fetch和git merge兩個步驟的結合。 

git pull的用法如下:

git pull 《遠端主機名》 《遠端分支名》:《本地分支名》

//取回遠端主機某個分支的更新,再與本地的指定分支合併。

因此,與git pull相比git fetch相當於是從遠端獲取最新版本到本地,但不會自動merge。如果需要有選擇的合併git fetch是更好的選擇。效果相同時git pull將更為快捷。

詳解git fetch與git pull的區別

git fetch和git pull都可以將遠端倉庫更新至本地那麼他們之間有何區別?想要弄清楚這個問題有有幾個概念不得不提。fetch head 是乙個版本鏈結,記錄在本地的乙個檔案中,指向著目前已經從遠端倉庫取下來的分支的末端版本。commit id 在每次本地工作完成後,都會做乙個git com...

詳解git pull和git fetch的區別

前言在我們使用git的時候用的更新 是git fetch,git pull這兩條指令。但是有沒有小夥伴去思考過這兩者的區別呢?有經驗的人總是說最好用git fetch git merge,不建議用git pull。也有人說git pull git fetch git merge,真的是這樣嗎?為什麼...

詳解git pull和git fetch的區別

前言 在我們使用git的時候用的更新 是git fetch,git pull這兩條指令。但是有沒有小夥伴去思考過這兩者的區別呢?有經驗的人總是說最好用git fetch git merge,不建議用git pull。也有人說git pull git fetch git merge,真的是這樣嗎?為什...