2016-07-08 184 views
0

git fetch B + merge B和merge origin/B有什麼區別?有什麼區別git fetch B + git merge B vs git merge origin/B

$ git fetch origin develop 
From [...] 
* branch   develop -> FETCH_HEAD 
$ git merge develop 
Already up-to-date. 
$ git merge origin/develop 
error: Your local changes to the following files would be overwritten by merge 
... 

在上述序列中我期望合併到輸出相同,但結果是不同的。我預計「fetch」命令會在本地檢索遠程分支,以便它可用於本地合併操作。提取完成後,我期望從本地分支合併成爲從原點合併的平等操作。這個期望我錯了嗎?

回答

0

提取只下載提交,但不適用於您的本地分支副本。對於這兩個操作是等價的,您需要先將origin/B與(local)B合併。如果你不這樣做,本地B的HEAD沒有改變,並且分支將在原點後面(你可以通過運行git狀態來檢查本地B或通過運行git branch -vv來驗證)。

請注意,這與您在git checkout B vs git checkout origin/B時的差異相同。

0
  • git fetch origin develop

    獲取遙控器上的develop分支到您的遠程分支origin/develop(其中本地存在)

  • git merge develop

    融合了當地develop分支到當前分支。假設你有develop目前簽出,這不會做任何事情。

  • git merge origin/develop

    合併當地origin/develop分支到當前分支。 origin/develop指向origin遠程的本地存儲庫中的遠程分支develop。這將合併您在第一步中獲取的分支。

+0

忘了提,我在功能/ XXX分支 – shamil

相關問題