为什么"git pull"从存储库获取所有分支但"git pull origin master"不是?

Pro*_*tak 14 git

为什么git pull从存储库获取所有分支但git pull origin master不是?我发现它很难.它是这两个命令之间唯一的功能区别吗?

像这样的解释告诉我什么:

git pull= git fetch origin+git merge origin/master

git pull origin master= git fetch origin master+git merge FETCH_HEAD

esy*_*cat 30

后一个命令git pull origin master告诉git特定地获取和合并master分支(来自远程命名origin,更加精确).

git pull 获取跟踪远程分支的所有本地分支的更新,然后合并当前分支.

  • 本地克隆中的`.git`目录包含已从删除存储库中收到的所有对象.`git fetch`基本上是一个从远程接收任何新对象的命令.这样,所有其他操作,包括合并(当然不包括`git push`),在本地工作(并且不需要网络连接) (4认同)

phi*_*hag 8

来自以下文件git pull:

git pullgit fetch使用给定参数运行并调用git merge以将检索到的分支头合并到当前分支中

当您git fetch不带参数调用时,会发生以下情况

从一个或多个其他存储库中获取命名的头部或标记,以及完成它们所需的对象.
git fetch来自(...)单个命名存储库(...)的[fetches]

添加参数时,仅提取指定的remote和head(= branch/tag/commit/...),然后合并.

  • `HEAD` 是当前提交。“heads”这个术语基本上意味着“分支和标签”。 (2认同)