git - 合并原点/主节点的行为不符合预期
问题描述
我对origin
在 git 中用作路径的一部分的理解是您正在处理代码的服务器版本;结果(除了冲突等),我希望以下两组命令以相同的方式运行(假设我的分支在 mytestbranch 中,并从该分支签出开始):
git checkout master
git pull
git checkout mytestbranch
git merge master
更简洁:
git merge origin/master
但是,似乎 origin/master 并不总是从服务器获取最新版本。我是否误解了这样做的目的?
解决方案
origin/<branch>
仅包含自您上次fetch
编辑以来的远程内容。
git pull
与git fetch
+相同git merge origin/<branch>
(技术上,git merge FETCH_HEAD
请参见此处):
git fetch
将使您的远程分支保持最新,git merge origin/master
并将刚刚获取的更改合并到您的本地分支(我在这里假设您设置了远程跟踪分支)。
这里的关键是,只有当你执行git fetch
or git push
(或者git pull
,正如刚才解释的那样)时,你的存储库才会连接到远程。所有其他操作都在本地执行。
您的两个示例之间的另一个小区别是,git merge origin/master
在与 master 不同的某个分支上,会将远程 master 的最新获取更改合并到该分支,但它不会更新您的本地master(您只能在当前检查时更新本地分支出去)。
顺便说一句,一个“以图形方式”了解遥控器和远程分支的好网站是https://learngitbranching.js.org/?NODEMO。官方git 文档包含更详尽的解释。
推荐阅读
- c# - 在WPF C#中按下按钮时如何向窗口添加新标签
- maven - Maven jacoco 排除了可能由于 uber jar 而无法工作
- c# - 您可以使用 ML.NET 回归算法和共享单车示例中的部分数据吗?
- android - 全屏模式下的 Android NavigationUI 片段
- java - 无法弄清楚如何在 Windows 上的 Java 中使用 SCIP(使用 eclipse)
- php - Wordpress 迁移和 Polylang 不起作用
- junit - 警告:ID 为“spek2”的 TestEngine 无法使用 Gradle v5.2.1 发现测试
- java - 动态读取文件而不给出文件的静态引用
- excel - 清除Excel工作表中多行的依赖下拉列表
- python - 为前瞻对序列实现生成器