【发布时间】:2019-07-14 13:13:46
【问题描述】:
- 添加上游远程跟踪分支的正确方法是什么?
- 如何克隆所有远程分支,包括上游分支?
我知道这会很快被标记为重复,但请在做出这样的决定之前阅读整篇文章。特别是,验证两个*包含的答案* 不是您所提议的,并验证您所提议的内容是否可以解决我的具体问题,而不仅仅是*似乎*标题相似。
对于问题一,我做了git remote add upstream 并获得了remotes/upstream/master 的远程跟踪分支,然后是git checkout 本地分支。这是我的结果(我不确定它是否处于正确的阶段,因为我期望一个远程一个本地):
$ git branch -avv | grep upstream
upstream 34e36ed [upstream/master] added travis-CI ...
remotes/origin/upstream 34e36ed added travis-CI ...
remotes/upstream/master 34e36ed added travis-CI ...
现在真正的麻烦是第二个问题。
- 我从 Machine-A 推到 GH,然后在 Machine-B 上做了
git pull。然后在 Machine-B 中,我发现我不再有remotes/upstream/master分支,只有remotes/origin/upstream。我希望在 Machine-Bupstream分支中仍然像在 Machine-A 中一样跟踪upstream/master分支。所以, -
我跟着“Git Hub Clone All Branches At Once”做了建议的
git checkout -b upstream origin/upstream,这就是我得到的:$ git branch -avv | grep upstream upstream 34e36ed [origin/upstream] added travis-CI ... remotes/origin/upstream 34e36ed added travis-CI ...
即,本地 upstream 正在跟踪 origin/upstream,而不是 upstream/master,它不再是远程跟踪分支 - 我看不出它如何与 remotes/upstream/master 链接。
- 然后我尝试使用“How to clone all remote branches in Git?”的答案并做了
git checkout upstream(当然是在删除旧的本地upstream分支之后),因为:
如果你只是想快速浏览一下上游分支,可以直接查看:
$ git checkout origin/experimental但如果您想在该分支上工作,您需要创建一个本地跟踪分支,该分支由以下方式自动完成:
$ git checkout experimental
但是本地的upstream是一样的,还是跟踪origin/upstream,而不是remotes/upstream/master:
$ git branch -avv | grep upstream
upstream 34e36ed [origin/upstream] added travis-CI ...
remotes/origin/upstream 34e36ed added travis-CI ...
因此,帖子顶部的两个问题都与设置上游远程跟踪分支的正确方法密切相关。
【问题讨论】:
标签: git github git-branch