“为什么?”;git pull“;从存储库中获取所有分支,但;git pull origin master“;不这样做吗?
为什么“为什么?”;git pull“;从存储库中获取所有分支,但;git pull origin master“;不这样做吗?,git,Git,为什么git-pull从存储库中获取所有分支,而git-pull-originmaster没有?我发现这很难。这是这两个命令之间唯一的功能区别吗 这样的解释并不能告诉我什么: git-pull=git-fetch-origin+git-merge-origin/master git-pull-origin-master=git-fetch-origin-master+git-merge-fetch\u-HEAD后一个命令,git-pull-origin-master,告诉git专门从名为orig
git-pull
从存储库中获取所有分支,而git-pull-originmaster
没有?我发现这很难。这是这两个命令之间唯一的功能区别吗
这样的解释并不能告诉我什么:
git-pull
=git-fetch-origin
+git-merge-origin/master
git-pull-origin-master
=git-fetch-origin-master
+git-merge-fetch\u-HEAD
后一个命令,git-pull-origin-master
,告诉git专门从名为origin
的远程站点获取并合并主节点
git pull
获取所有本地分支的更新,这些分支跟踪远程分支,然后合并当前分支。来自:
git pull
使用给定参数运行git fetch
,并调用git merge将检索到的分支头合并到当前分支中
当您在没有参数的情况下调用时,会发生以下情况
从一个或多个其他存储库中获取命名头或标记,以及完成它们所需的对象。
git fetch
[fetches]从(…)单个命名存储库(…)
添加参数时,只提取指定的远程和头(=branch/tag/commit/…),然后合并。Git pull只提取签出分支
如果要使用源远程分支更新所有本地分支
git pull --all
所以“获取所有本地分支的更新”是不同之处。如果它在不合并的情况下获取所有本地分支的更新,它实际上会做什么?.git
本地克隆中的目录包含所有对象,您已经从删除存储库收到了这些对象git fetch
基本上是从远程接收任何新对象的命令。通过这种方式,所有其他操作,包括合并(当然不包括git push
),都在本地工作(不需要网络连接)“从一个或多个其他存储库获取命名头或标记”……嗯。。。我以为只有一个头像,而且总是在主枝上?“heads”是什么意思?HEAD
是当前提交heads
是一个术语,基本上意味着分支和标记。术语HEAD
主要用于指当前分支上的最后一次提交。但是,显然,每个分支和标记在任何时间点都有自己的最后一次提交,也就是提示HEADS
是一个通常用来指代所有这些技巧的术语。只是一个提示,没有参数的git pull
的行为也在很大程度上取决于git的配置方式,请参阅的“默认行为”一节。也许您指的是“git pull--all”(无空格)。git手册页对此模棱两可,但根据我的测试,它只更新所有已设置为跟踪远程分支的本地分支。有关如何获取所有可用远程分支的更多信息,请参阅此其他答案: