web-dev-qa-db-fra.com

git clone et checkout en une seule commande

Voici la commande que j'utilise pour extraire un commit spécifique.

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

Je veux faire ce qui précède en une seule étape - en utilisant une commande git clone uniquement.

La raison pour laquelle je veux le faire est que repo123 est très énorme. Donc, vérifier le commit que je veux me fera gagner beaucoup de temps.

Je suis conscient de --depth option. Mais dans ce cas, cela ne sert à rien. Quelqu'un peut-il me dire comment le faire?

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

clone toujours tout, mais définit le local HEAD dans cette branche, c'est donc celui qui a été extrait.

Source :

- branche <nom>
- b <nom>
Au lieu de pointer le nouveau HEAD vers la branche pointée par le HEAD du référentiel cloné, pointez sur <name> branche à la place. Dans un référentiel non nu, c'est la branche qui sera extraite. --branch peut également prendre des balises et détacher le HEAD à ce commit dans le référentiel résultant.

47
jthill

Votre problème est-il le checkout trop grand ou le dépôt lui-même? Comme git clone, eh bien, clone un référentiel, vous obtenez généralement l'ensemble du référentiel dans sa pleine taille. (sauf si vous faites un clone peu profond comme vous l'avez déjà suggéré.)

S'il s'agit vraiment de la vérification de la mauvaise branche git help clone dit:

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

Après le clonage avec -n vous pouvez retirer manuellement

4
michas

J'étais dans une même situation et cela fonctionnait bien avec la commande Git Clone avec --depth. Et spécifiez le nom de la branche/commit/Tag-Name à la fin de la commande avec -b paramètre.

Syntaxe:

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