我想从master以外的其他分支中提取代码,即有两个分支master和dummy,master分支是哑分支之前的一些提交,而哑包含某些不在master分支中的提交,那么我该怎么办?将这两个分支都拉到本地,就像有不同的提交一样。
我尝试过先创建虚拟分支并将其从远程拉出,然后包含来自主分支的提交
git clone repolink
git checkout -b dummy
git pull upstream dummy
我知道使用master以外的其他分支进行克隆
git clone --branch dummybranch --single-branch repolink
有没有办法在单个本地仓库中包含具有不同提交的两个分支?
答案 0 :(得分:0)
git clone
已将每个分支都克隆到您的存储库。但是它并没有为所有它们创建本地分支,只是master
。其余的位于远程跟踪分支中,这些分支的前缀为远程名称origin
。您可以通过git branch -r
看到它们。
远程的主分支位于远程跟踪分支origin/master
中。他们的dummy
在origin/dummy
中。您的仓库看起来像这样。
[origin/master]
A - B - C - D [master]
\
E - F [origin/dummy]
克隆已创建本地master
分支,但没有创建本地dummy
。
默认情况下,创建新分支时,它不在当前分支之内。如果您在克隆后立即master
签出了副本,则git checkout -b dummy
在dummy
之外建立一个名为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。