我已经阅读了许多有关“起源/母版”的答案,他们说这是分支母版的远程起源的本地副本。当我读到set-upstream-to应该指向远程分支master的地方时,我很困惑,所以谁能解释为什么set-upstream-要引用本地副本而不是remote?像git push origin master
而不是git push origin/master
答案 0 :(得分:0)
您似乎对基本的Git命令中的引用有些困惑。而且您应该感到困惑,因为这很令人困惑。
本地分支master
仅存在于本地Git存储库中,是您从事大部分实际开发工作的地方。同样,遥控器上还存在一个名为master
的分支。现在,由于混乱,有一个名为origin/master
的第三分支。这是一个 local 分支,位于您的本地存储库中。它主要用于充当真正的远程master
分支的代理。每当您与远程master
分支同步时,本地实际上就在使用origin/master
。
执行git pull origin master
实际上与此相同(假设您默认使用合并策略):
git fetch origin
git merge origin/master
第一步git fetch origin
,用最新更改更新本地跟踪分支origin/master
,以便在远程上镜像真实的master
分支。然后,它使用master
合并到本地origin/master
分支中。这是一个简短的摘要:
master | the master branch (either local or remote)
origin master | the master branch on the remote (as in the git pull command)
origin/master | local tracking branch for master which mirrors the remote version
因此,请记住origin/master
是跟踪真正的远程master
分支的实际分支,我们可以通过以下方式告诉Git使用origin/master
作为跟踪分支:
# from local master branch
git --set-upstream-to origin/master
请注意,如果您在本地创建或签出master
,Git通常会创建origin/master
作为幕后的默认跟踪分支。因此,实际上,您可能不必经常使用--set-upstream-to
。