2017-02-09 221 views
1

我正在通過git scm book並閱讀部分this page。它說:git fetch和git pull混淆

雖然混帳讀取命令將獲取了所有的服務器上,你不還沒有改變,也不會在所有修改工作目錄。它只會爲你獲取數據並讓你自己合併。

我用「混帳獲取上游」和它合併現有的遠程分支到我的本地分支,根據我這更新工作目錄以及所有的變化。但是它與上述說法相矛盾。

我感到困惑,無法擺脫困境。有人可以解釋嗎?

我已經通過標記爲重複的鏈接。我可能是愚蠢的,但我從這些答案中沒有得到任何澄清上述聲明。請幫忙。

更新

下面是我跑,其輸出的命令:

bash-3.2$ git fetch upstream 
remote: Counting objects: 108, done. 
remote: Compressing objects: 100% (8/8), done. 
remote: Total 108 (delta 77), reused 77 (delta 77), pack-reused 23 
Receiving objects: 100% (108/108), 25.92 KiB | 0 bytes/s, done. 
Resolving deltas: 100% (79/79), completed with 31 local objects. 
From <git-repo-url> 
    a82339d..9844eeb master -> upstream/master 
    802bae5..6c84bfb <some-branch> -> upstream/<some-branch> 
+1

[git pull'和'git fetch'之間的差異可能重複](http://stackoverflow.com/questions/292357/difference-between-git-pull-and-git-fetch) –

+0

還有很多可以在SO上找到相同問題的最佳解釋,參考任何一個。 –

+0

這是真的......你可以找到很多類似的答案..不管怎樣,我試圖收集我的答案中的一些命令差異......希望這有助於!祝你今天愉快! –

回答

1

我用「混帳獲取上游」和它合併現有的遠程分支到我的本地分支,它根據 我更新工作目錄以及所有的變化 。但後來它與上面的陳述相沖突。

git fetch不會更新您的本地分支機構或您的工作目錄。

你可能會認爲它更新一個本地分支,給出這樣的線,

a82339d..9844eeb master -> upstream/master 

但根據Output section in the git-fetch manual,這意味着

  • master是「裁判」的名字(一個分支是一種參考)在遠程存儲庫被取出,而
  • upstream/master是參考的名稱正在更新的本地存儲庫中。

注意,分支master在本地倉庫沒有更新。

+0

感謝您的幫助。這個答案連同我讀過的一些文章幫助我最終理解它。事情很難,直到你不明白爲止。 –

0

不同的是,一個git拉做了git的取指,然後一個git合併來更新你的本地分支。

0

不知道爲什麼這會產生混淆....無論如何:你提到的評論正是git fetch正在做的。 請看看老 What is the difference between 'git pull' and 'git fetch'?

例如: git fetch origin - >將獲取的變化,但不合併到你的 git merge origin/master - >必須使用事後合併。

以一種時尚和快速的方式做到這一點的其他方式是使用拉: git pull origin(whatever) - >將在一個鏡頭中做到這一點。

希望這個澄清有點你的疑惑:-)有一個愉快的一天!