假设我正在master
分支上,并且我有一个远程分支develop
在我的名为origin
的远程仓库中,一切都是最新的,我已经运行了git fetch
。
现在git merge origin/develop
和git pull origin develop
之间有什么区别吗?
Pull 是一个 fetch + merge ,你明确地从一个远程 *已跟踪的分支进行合并,所以即使没有 fetch,也没有区别。
如果您给我一个 -1 ,请至少评论一下对我的答案有什么问题。
git fetch
之后更改了远程仓库,唯一的区别是默认的提交信息将不同。其中一个将显示merge branch 'origin/develop'
,而另一个则会显示merge branch 'develop' of 'url'
。如果您提供或编写自己的合并消息,则根本没有可检测的区别。origin/develop
不是一个分支,所以这个问题更像是“git merge remote-tracking-ref和git pull remote branch之间的区别”...pull
的行为。(例如,pull
可以被配置为重新定位本地更改而不是合并。)fetch
”,也不能排除其他人在你执行下一个命令之前做了一个push
。pull
也没有什么好处,因为有人可能在你的pull
之后做一个push
...所以如果世界想要伤害你,你所做的任何事情都不能保证没有比你本地更多的东西在origin中。fetch
,这在实际上没有太大的区别。git checkout origin/develop
,看看是否会进入分离头状态。(顺便说一下,不确定为什么你认为你的截图有关...) - Mark Adelsbergerrefs/heads/
内部”。 - Mark Adelsberger
fetch
命令会有差别,因为我正在与origin/develop
合并,但是如果没有使用fetch
命令,origin/develop
的引用可能不是最新的。另一方面,git pull origin develop
将始终与更新的origin/develop
合并。 - Aram810