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


283

git pull origin master和之间有什么区别git pull origin/master


1
平静几乎涵盖了所有内容,但无法回答的是您永远都不要这样做git pull origin/master。如果要合并[本地存储]远程分支origin/master,请使用git merge origin/master
卡斯卡贝尔

3
@Jefromi:您能解释一下为什么与git pull相比总是做git merge更好吗?
雷切尔

16
git pull手段git fetch之后git merge。它从远程获取内容,然后将其合并到当前分支中。但是origin/master是本地分支(跟踪远程分支)。如果要合并,则无需获取任何内容。git pull origin/master当您实际上不是从远程获取时,说这样是一种误导。
卡斯卡贝尔

感谢Jefromi提供了有用的信息。确实很容易理解而不是那么容易的概念。
雷切尔

对于那些阅读此书但仍然感到困惑的人,origin/master是一个本地存储的分支,该分支将master分支缓存在原始远程服务器上。
iheanyi

Answers:


353

git pull origin master将从origin远程master分支提取更改,并将其合并到本地已签出分支。

git pull origin/master将从本地存储的分支中提取更改origin/master并将其合并到本地签出的分支。该origin/master分支本质上是上次从中提取的内容的“缓存副本” origin,这就是为什么在git parlance中将其称为远程分支。这可能有些令人困惑。

您可以查看可用的分支git branch以及git branch -r“远程分支”。


1
如果git pull origin master它将始终合并到master分支,比如说我在仓库中的另一个分支上,然后执行上述命令,它将使用源远程更改更新我的当前分支,还是使用更改来更新我的master分支?
雷切尔

4
@calmh :(git merge并因此git pull)始终合并到当前分支中。要与当前分支以外的其他分支合并,只需先将其签出即可。
卡斯卡贝尔

2
嗯。他们都是起源上的主分支。您能否实际举例说明它们何时会有所不同?
哈森

69
git pull origin/master编写此命令时可能是一个有效的命令,但如今(git 1.7.10.3)它失败了fatal: 'origin/master' does not appear to be a git repository(应该如此-pull 总是用于从遥控器中拉出)。
user1338062

3
为什么git如此令人困惑?因此,我们总共有4个存储库,对吗?有一个(1)远程存储库,(2)一个本地存储库,(3)一个临时存储库,(4)一个本地远程aka起源/主服务器?为什么git完全有#4仓库?
Mugen

3

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.