首页 > 解决方案 > 合并原点/主节点的行为不符合预期

问题描述

我对origin在 git 中用作路径的一部分的理解是您正在处理代码的服务器版本;结果(除了冲突等),我希望以下两组命令以相同的方式运行(假设我的分支在 mytestbranch 中,并从该分支签出开始):

git checkout master
git pull
git checkout mytestbranch
git merge master

更简洁:

git merge origin/master

但是,似乎 origin/master 并不总是从服务器获取最新版本。我是否误解了这样做的目的?

标签: git

解决方案


origin/<branch>仅包含自您上次fetch编辑以来的远程内容。

git pullgit fetch+相同git merge origin/<branch>(技术上,git merge FETCH_HEAD参见此处): git fetch将使您的远程分支保持最新,git merge origin/master并将刚刚获取的更改合并到您的本地分支(我在这里假设您设置了远程跟踪分支)。

这里的关键是,只有当你执行git fetchor git push(或者git pull,正如刚才解释的那样)时,你的存储库才会连接到远程。所有其他操作都在本地执行。

您的两个示例之间的另一个小区别是,git merge origin/master在与 master 不同的某个分支上,会将远程 master 的最新获取更改合并到该分支,但它不会更新您的本地master(您只能在当前检查时更新本地分支出去)。

顺便说一句,一个“以图形方式”了解遥控器和远程分支的好网站是https://learngitbranching.js.org/?NODEMO。官方git 文档包含更详尽的解释。


推荐阅读