Git从master以外的其他分支拉远

时间:2020-04-18 18:24:40

标签: git git-branch git-push git-pull

我想从master以外的其他分支中提取代码,即有两个分支master和dummy,master分支是哑分支之前的一些提交,而哑包含某些不在master分支中的提交,那么我该怎么办?将这两个分支都拉到本地,就像有不同的提交一样。

我尝试过先创建虚拟分支并将其从远程拉出,然后包含来自主分支的提交

git clone repolink

git checkout -b dummy

git pull upstream dummy

我知道使用master以外的其他分支进行克隆

git clone --branch dummybranch --single-branch repolink

有没有办法在单个本地仓库中包含具有不同提交的两个分支?

1 个答案:

答案 0 :(得分:0)

git clone已将每个分支都克隆到您的存储库。但是它并没有为所有它们创建本地分支,只是master。其余的位于远程跟踪分支中,这些分支的前缀为远程名称origin。您可以通过git branch -r看到它们。

远程的主分支位于远程跟踪分支origin/master中。他们的dummyorigin/dummy中。您的仓库看起来像这样。

              [origin/master]
A - B - C - D [master]
     \
      E - F [origin/dummy]

克隆已创建本地master分支,但没有创建本地dummy

默认情况下,创建新分支时,它不在当前分支之内。如果您在克隆后立即master签出了副本,则git checkout -b dummydummy之外建立一个名为master的分支。

$ git checkout -b dummy

              [dummy]
              [origin/master]
A - B - C - D [master]
     \
      E - F [origin/dummy]

那是不对的。我们希望它脱离origin/dummy

在删除了错误的假人git branch -d dummy之后,我们可以签出来源/虚拟人,然后创建分支。

git checkout origin/dummy
git checkout -b dummy

              [origin/master]
A - B - C - D [master]
     \
      E - F [origin/dummy]
            [dummy]

或者作为一种简写,我们可以传入想要分支的地方

git checkout -b dummy origin/dummy

或更短的话,您可以简单地检出不存在的dummy分支,Git会假定它应该是origin/dummy的本地分支。默认情况下,此设置由--guess选项控制。

git checkout dummy
Branch 'dummy' set up to track remote branch 'dummy' from 'origin'.
Switched to a new branch 'dummy'

有关更多信息,请参见Working With Remotes in Pro Git