2017-02-09 153 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) - >将在一个镜头中做到这一点。

希望这个澄清有点你的疑惑:-)有一个愉快的一天!