克隆所有远程分支,包括上游

时间:2019-07-14 13:13:46

标签: git github git-branch

  • 添加上游远程跟踪分支的正确方法是什么?
  • 如何克隆包括上游分支在内的所有远程分支?

我知道这将很快被标记为重复,但是请在决定前先阅读整篇文章。特别是,请验证两个 *包含的答案* 不是您要提出的,并验证您提出的内容可以解决我的特定问题,而不仅仅是*似乎*标题相似。

对于问题1,我做了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 ...

现在真正的麻烦是问题二。

  • 我从机器A推到GH,然后在机器B上进行了git pull。然后在Machine-B中,我发现我不再拥有remotes/upstream/master分支,只有remotes/origin/upstream。我希望在机器B的upstream分支中仍像在机器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/master代替了upstream,正在跟踪origin/upstream,它不再是远程跟踪分支-我看不到它如何与{ {1}}。

  

如果您只想快速浏览上游分支机构,则可以直接查看:

upstream
     

但是,如果您想在该分支上工作,则需要创建一个本地跟踪分支,该分支可以通过以下方式自动完成:

$ git checkout origin/experimental

但是本地$ git checkout experimental 是相同的,但仍在跟踪upstream,而不是origin/upstream

remotes/upstream/master
因此,帖子顶部的两个问题都与设置上游远程跟踪分支的正确方法密切相关。

1 个答案:

答案 0 :(得分:1)

  

添加上游远程跟踪分支的正确方法是什么?

没有。

  

如何克隆包括上游分支在内的所有远程分支?

没有简单的方法。尽管远程跟踪分支称为分支,它们并不是真正的分支,但它们是一种特殊的参考。 AFAIK git协议不会公开它们,因此无法拉出或推动它们。

如果您具有ssh访问权限,可以在远程存储库中运行命令,则可以尝试 手动与他们合作。定期运行ssh origin git branch -r;这给 您在远程存储库中的远程跟踪分支机构列表。处理列表,查看每个参考点的提交,并在本地存储库中创建指向同一提交的分支。