在旧的Git版本上,相当于git clone -b的命令是什么?

时间:2011-04-21 08:28:23

标签: git git-branch git-clone

一位朋友被困在一个旧版本的Git(我认为他说1.5?),他说不支持-b <branch>选项。我无法绕过它,所以我真的希望有人可以提供帮助:

在不使用-b的情况下,相当于以下命令的内容是什么?

git clone -b $BRANCH $REPO
编辑:我最初要求git checkout - 这不是我的意思。遗憾!

3 个答案:

答案 0 :(得分:6)

在较旧的git中,这需要两个步骤:

git branch $BRANCH $FROM_COMMIT
git checkout $BRANCH

注意我使用$FROM_COMMIT$REPO在您的问题中看起来很奇怪且误导 - 您只能从提交创建分支,而不是从其他存储库创建分支。


编辑我的答案,因为问题被改变了。阅读git clone的联机帮助页,我们可以看到

  

-b

     

不是将新创建的HEAD指向克隆存储库的HEAD指向的分支,而是指向分支。在非裸存储库中,这是将要检出的分支。

使用较旧的git版本实现此效果,我们将使用:

git clone $REPO
git branch $BRANCH origin/$BRANCH
git checkout $BRANCH

这会将您的本地HEAD设置为新创建的$BRANCH,该origin/$BRANCH指向{{1}}

(希望我没弄错 - 我这里没有安装git来测试......)

答案 1 :(得分:4)

他应该能够做到:

git clone -n $REPO
cd <reponame>
git checkout -b $BRANCH origin/$BRANCH

我已经检查过这些选项对于v1.2.0是否有效,所以如果他的选项至少为1.5,这应该是好的。

作为参考,克隆只获得了v1.6.5中的-b / --branch选项。

答案 2 :(得分:2)

那将是:

git clone -n $REPO
git checkout -b $BRANCH origin/$BRANCH

(请参阅Charles Baileyanswer获取正确答案)

如果您没有从HEAD repo,获取默认分支,则需要获取您实际想要跟踪的分支,然后创建自己的本地分支


我会删除这个答案,但Charles Bailey的评论很有意思:

  

在克隆之后立即获取内容毫无意义,但您可能希望将-n传递给clone ,以避免不必要地检出遥控器的默认分支
  此外,您需要-b的{​​{1}}选项。

     

我刚检查过,checkout已添加到提交-b的{​​{1}}中,该checkout早于git的91dcdfd3。   如果你的朋友使用的是比这更早的版本(这似乎极不可能),那么你需要更具体。