git pull origin master 和 git pull origin/master 之间的区别

402
"

git pull origin mastergit pull origin/master有什么区别?

"

2
calmh 已经基本涵盖了它,但是非答案是您不应该使用 git pull origin/master。如果您想合并 [本地存储的] 远程分支 origin/master,只需使用 git merge origin/master - Cascabel
3
为什么与使用git pull相比,使用git merge总是更好呢? - Rachel
28
git pull 表示 git fetch 后跟着 git merge。它会从远程获取内容,然后将其合并到当前分支中。但是 origin/master 是一个本地分支(跟踪远程分支)。如果你想要合并它,你不需要获取任何东西。当你实际上没有从远程获取内容时,说 git pull origin/master 是具有误导性的。 - Cascabel
感谢Jefromi提供的有用信息。它确实帮助我们更容易地理解并不那么容易的概念。 - Rachel
3
对于那些阅读并仍感到困惑的人,origin/master是一个本地储存的分支,该分支缓存了远程仓库中的主分支。 - iheanyi
3个回答

537

git pull origin master 命令会从远程的 origin 仓库的 master 分支拉取更新,并将其合并到本地当前所在的分支。

git pull origin/master 命令会从本地存储的 origin/master 分支拉取更新,并将其合并到本地当前所在的分支。实际上,origin/master 是上一次从远程仓库 origin 拉取时的“缓存副本”,这就是为什么在 git 中它被称为远程分支,可能有些令人困惑。

你可以使用 git branchgit branch -r 命令查看可用的分支,包括“远程分支”。


5
git merge命令(以及git pull)总是将分支合并到当前分支中。如果要与除当前分支以外的其他分支进行合并,只需先切换到该分支即可。 - Cascabel
2
嗯...我不明白'origin/master'和'origin master'有什么区别;它们都是源上的主分支。你能举个例子说明它们何时会不同吗? - hasen
89
当这段文字被写出时,git pull origin/master 可能是一个有效的命令,但是现在(git 1.7.10.3),它会失败并显示 fatal: 'origin/master' does not appear to be a git repository (这也应该如此 - pull 命令总是用于从远程仓库拉取代码)。 - user1338062
6
为什么Git如此令人困惑?所以我们总共有4个仓库,对吗?有一个远程仓库、一个本地仓库、一个暂存仓库和一个本地-远程仓库,也就是origin/master,这样做的原因是什么呢? - Mugen
2
@Rachel,回答你的问题,“git pull origin master”中的“master”一词是指源(而非目标)分支;即它将从名为“master”的远程分支(默认别名为从中克隆HEAD分支的远程存储库URL)拉取新更改,然后将这些更改合并到本地HEAD分支,即在发出命令时处于“活动”/签出状态的本地分支。 - galaxis
显示剩余5条评论

13

git pull = git fetch + git merge origin/branch

git pullgit pull origin branch 的不同之处在于后者只会“更新” origin/branch,而不像git pull那样更新所有的origin/*。

git pull origin/branch无法正常工作,因为它试图执行无效的git fetch origin/branch操作。

相关问题:git fetch + git merge origin/master vs git pull origin/master


13

git pull origin master 将获取远程主分支的所有更改并将其合并到您的本地分支。我们通常不使用 git pull origin/master。我们可以通过 git merge origin/master 做同样的事情。它将把远程主分支的“缓存副本”中的所有更改合并到您的本地分支。在我的情况下,git pull origin/master 抛出错误:

fatal: 'origin/master' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接