一位朋友被困在一个旧版本的Git(我认为他说1.5?),他说不支持-b <branch>
选项。我无法绕过它,所以我真的希望有人可以提供帮助:
在不使用-b
的情况下,相当于以下命令的内容是什么?
git clone -b $BRANCH $REPO
编辑:我最初要求git checkout
- 这不是我的意思。遗憾!
答案 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 Bailey的answer获取正确答案)
如果您没有从HEAD
repo,获取默认分支,则需要获取您实际想要跟踪的分支,然后创建自己的本地分支。
我会删除这个答案,但Charles Bailey的评论很有意思:
在克隆之后立即获取内容毫无意义,但您可能希望将
-n
传递给clone
,以避免不必要地检出遥控器的默认分支。
此外,您需要-b
的{{1}}选项。我刚检查过,
checkout
已添加到提交-b
的{{1}}中,该checkout
早于git的91dcdfd3
。 如果你的朋友使用的是比这更早的版本(这似乎极不可能),那么你需要更具体。