合并原始/主行为不正常

时间:2019-04-10 12:28:05

标签: git

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

git checkout master
git pull
git checkout mytestbranch
git merge master

更简洁:

git merge origin/master

但是,似乎起源/母版并不总是从服务器获取最新版本。我误会这是做什么的吗?

2 个答案:

答案 0 :(得分:1)

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

git pullgit fetch + git merge origin/<branch>(在技术上为git merge FETCH_HEADsee here)相同: git fetch将使您的远程分支机构保持最新状态,而git merge origin/master会将刚刚获取的更改合并到本地分支机构中(我假设此处已设置了远程跟踪分支机构)。

这里的关键是只有当您执行git fetchgit push(或git pull,如刚刚说明)时,您的存储库才会连接到远程服务器。所有其他操作均在本地

执行。

两个示例之间的另一个小区别是,与主服务器不同的某个分支上的git merge origin/master将合并到该分支的远程主服务器的最新提取更改中,但是不会更新您的 local master(您只能在当前已签出的本地分支上更新它)。

顺便说一句,一个很好的网站可以“以图形方式”了解远程站点和远程分支机构,https://learngitbranching.js.org/?NODEMO。官方git documentation包含更详尽的解释。

答案 1 :(得分:0)

origin/master远程跟踪分支。

它的工作是跟踪远程分支机构的状态,甚至离线。这意味着每次您想要在真实的远程分支和用来表示它的图像(相关的远程跟踪分支,origin/master)之间进行同步时,都必须使用

git fetch

然后,git将向您的遥控器发送一个请求,要求所有分支的更新版本(如果有任何更新或新的)。 (选中doc