web-dev-qa-db-ja.com

単一のコマンドでgit cloneとチェックアウト

以下は、特定のコミットをチェックアウトするために使用するコマンドです。

git clone git://repo.git/repo123
git checkout <commitID>

上記を1つのステップで実行したい-git cloneコマンドのみを使用する。

私がこれをしたい理由は、repo123が非常に大きいためです。したがって、必要なコミットを確認することで、時間を大幅に節約できます。

気がついた --depthオプション。しかし、この場合、それは役に立ちません。誰でもそれを行う方法を教えてもらえますか?

35
user2731584
git clone u://r/l --branch x

それでもすべてのクローンを作成しますが、ローカルHEADをそのブランチに設定するため、チェックアウトされます。

ソース

-ブランチ<名前>
-b <名前>
新しく作成されたHEADを、複製されたリポジトリのHEADが指すブランチを指すようにする代わりに、代わりに<name>ブランチを指すようにします。ベアリポジトリ、これはチェックアウトされるブランチです。--branchはタグを取得し、結果のリポジトリのコミット時にHEADをデタッチすることもできます。

47
jthill

あなたの問題はcheckoutが大きすぎますか、それともrepository自体ですか? git cloneとして、まあ、通常はリポジトリ全体をフルサイズで取得します。 (既に提案したように浅いクローンを作成している場合を除きます。)

それが本当に間違ったブランチのチェックアウトに関するものである場合、git help cloneは次のように言います。

   --no-checkout, -n
       No checkout of HEAD is performed after the clone is complete.

-nで複製した後、手動でチェックアウトできます

4
michas

私は同じ状況に遭遇し、--depthを使用したGitクローンコマンドで問題なく動作しました。また、-bパラメータを使用して、コマンドの最後にbranch-name/commit/Tag-Nameを指定します。

構文:

git clone --depth 1 github.com:ORG-NAME/Repo.git -b <Branch-Name/Commit-Number/TAG>
3
Mir S Mehdi