我对使用origin
作为git中路径的一部分的理解是,您正在处理服务器版本的代码;结果(除了冲突等),我希望以下两组命令以相同的方式工作(假设我的分支在mytestbranch中,并从该分支开始检出):
git checkout master
git pull
git checkout mytestbranch
git merge master
更简洁:
git merge origin/master
但是,似乎起源/母版并不总是从服务器获取最新版本。我误会这是做什么的吗?
答案 0 :(得分:1)
origin/<branch>
仅包含自上次fetch
以来的远程内容。
git pull
与git fetch
+ git merge origin/<branch>
(在技术上为git merge FETCH_HEAD
,see here)相同:
git fetch
将使您的远程分支机构保持最新状态,而git merge origin/master
会将刚刚获取的更改合并到本地分支机构中(我假设此处已设置了远程跟踪分支机构)。
这里的关键是只有当您执行git fetch
或git 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)