2

友人が古いバージョンの Git (彼は 1.5 と言ったと思いますか?) で行き詰まっており、-b <branch>オプションがサポートされていないと言いました。私はそれに頭を包むことができないので、誰かが助けてくれることを本当に願っています:

を使用せずに、次のコマンドに相当するものは何-bですか?

git clone -b $BRANCH $REPO

編集:私は最初に求めましたgit checkout-それは私が意図したものではありません. ごめん!

4

3 に答える 3

6

古い git では、これには 2 つの手順が必要でした。

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

(うまくいけば、私は間違っていません-テストするためにここにgitをインストールしていません…)

于 2011-04-21T08:32:35.253 に答える
4

彼はできるはずです:

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

オプションがv1.2.0で有効であることを確認したので、彼が少なくとも1.5を使用している場合、これは適切なはずです。

参考までに、cloneはv1.6.5で-b/オプションのみを取得しました。--branch

于 2011-04-21T08:46:43.133 に答える
2

それは次のようになります。

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

(正しい答えについては、チャールズ・ベイリー答えを参照してください)

リポジトリからデフォルト ブランチをフェッチしない場合はHEAD実際に追跡したいブランチを取得してから、独自のローカルブランチを作成する必要があります.


私はこの回答を削除したでしょうが、Charles Bailey のコメントは興味深いものです。

クローンの直後に取得しても意味がありませんが、リモートのデフォルト ブランチの不要なチェックアウトを避けるため-nに に渡したい場合があります。また、 へのオプション が必要です。clone
-bcheckout

確認したところ、gitより前のコミット-bに追加されました。 友人がこれよりも古いバージョンを使用している場合 (これは非常にありそうもないことです)、より具体的に説明する必要があります。checkout91dcdfd3v1.0

于 2011-04-21T08:32:51.850 に答える