git fetch 的作用與原理


git fetch 命令的使用

  • 從遠程主機克隆

Git 的 clone 命令會為你自動將遠程主機命名為 origin,拉取它的所有數據,創建一個指向它的 master 分支的指針,並且在本地將其命名為 origin/master。同時Git 也會給你一個與 origin 的master 分支在指向同一個地方的本地 master 分支,這樣你就有工作的基礎。

  • 本地有提交,遠程也有別人的推送

遠程庫有人推送,提交了C0和C1:

本地提交了D0和D1:

只要你不與 origin 服務器連接,你的 origin/master 指針就不會移動。

  • 同步

如果要同步遠程庫到你的工作,運行 git fetch origin 命令。

$ git fetch origin

這個命令查找 “origin” 是哪一個服務器,從中抓取本地沒有的數據,並且更新本地數據庫,移動 origin/master 指針指向新的、更新后的位置。

要特別注意的一點是 fetch 抓取到新的遠程跟蹤分支時,本地的工作區(workspace)不會自動生成一份可編輯的副本,抓取結果是直接送到版本庫(Repository)中。如下圖:

打個比方,在遠程庫 origin 新建了一個分支 dev,git fetch 后本地不會生成一個新的分支 dev(可用 git branch 查看),只有一個不可以修改的 origin/dev 指針。

  • 在 origin/master 后繼續工作

如果想要在 origin/master 分支上工作,可以新建分支 test 並將其建立在遠程跟蹤分支之上:

$ git checkout -b test origin/master

這會給你新建一個用於工作的本地分支 test,並且起點位於 origin/master。

  • 合並

    如果想把拉取的結果合並到本地分支,需要手動合並。使用如下命令:
$ git chekout master
$ git merge origin/master


然而,看到上面的合並結果會想到命令 git pull 。在大多數情況下它的含義是一個 git fetch 緊接着一個 git merge 命令。即 git pull 是 git fetch 和 git merge 的兩步的和。

但是由於 git pull 的使用經常令人困惑,所以通常單獨顯式地使用 fetch 與 merge 命令會更好一些。

 

 

本文轉載自:Git:遠程分支----git fetch命令的使用_Samven_7的博客-CSDN博客


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM