Git:pull与fetch→pull
这个问题在这里已经有了答案:
我们可能应该把它作为一个副本来关闭,但在这之前,让我看看我是否可以将其压缩。
虽然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