Git:pull与fetch→pull

这个问题在这里已经有了答案:

  • 'git pull'和'git fetch'有什么区别? 40个答案

  • 我们可能应该把它作为一个副本来关闭,但在这之前,让我看看我是否可以将其压缩。

    虽然git pull真的是git fetch然后是git merge (或git rebase ),但精确的区别在于git pull如何运行git fetch

    特别:

    $ git pull

    要么:

    $ git pull remote-name branch-name

    (或各种类似的变体)运行,而不是纯粹的git fetch ,不是git fetch remote-name ,而是git fetch remote-name branch-name

    自从Git版本1.8.4以来,它的差别就比它在该版本之前的差异小:

  • git fetch origin master不像git fetch origin或者git fetch没有更新refs/remotes/origin/master ; 这是一个早期的设计决策,可以使远程跟踪分支的更新保持可预测性,但实际上,事实证明,只要有机会,人们发现更方便地更新它们,并且在我们运行git push时更新它们无论如何,已经打破了原有的“可预测性”。
  • 换句话说,如果git pull决定运行git fetch origin master ,这会更新你的仓库中的origin/master ,但前提是你没有运行某些未命名的Linux发行版中包含的Git的古老版本。

    如果你运行git fetch origin ,你将得到所有远程跟踪分支的更新(只要你有一个合理的配置,这是默认的,即使在上述古代版本的Git中也是如此)。 如果你运行git fetch origin master ,你只会得到更新的origin/master ,并且只有当你的git不是太荒唐的时候才会更新。 由于git pull运行四字变体,它只更新一个或甚至没有的远程追踪分支。


    我已经被告知(并且已经看到)如果你不首先进行git fetch,那么git pull的行为并不一样。 你没有得到任何远程更改。

    通常情况下,这是不正确的,并且git pull从远程状态中拉出状态。

    但我在网上看到的是,git pull等同于git fetch,然后是git merge。 如果那是真的,

    它是!

    引用git-pull的手册页:

    将远程存储库中的更改合并到当前分支中。 在默认模式下,git pull是git fetch的缩写,然后是git merge FETCH_HEAD。

    我认为解决它。

    所以我正在寻找的是一些明确的文件

    $ git help pull
    

    git pull是一个获取获取,然后是一个git合并。 (或者你可以使用--rebase选项来重新绑定)。 所以不,你不需要在'git pull'之前做'git fetch'

    输入'git help fetch'和'git help pull'来获取描述

    git fetch进入指定的存储库,获取被引用的对象(通常是提交),获取它以及它的所有依赖对象,并将其存储在指定的远程跟踪分支中。 然后,您可以合并或从那里重新绑定。 'git merge origin / master'或者你可以用'git checkout origin / master'来查看它,

    链接地址: http://www.djcxy.com/p/1187.html

    上一篇: Git: pull vs. fetch→pull

    下一篇: Getting started with web sockets