314 votes

Est-ce que git clone --dept 1 (clone peu profond) est plus utile qu'il ne le fait?

L' --depth 1 option en git clone:

Créer un peu profonde clone avec une histoire tronquée pour le nombre spécifié de révisions. Un peu référentiel a un certain nombre de limites (vous ne pouvez pas cloner ou chercher, ni pousser, ni en elle), mais elle est suffisante si vous êtes uniquement intéressé par l'histoire récente d'un grand projet avec une longue histoire, et voudrait envoyer des correctifs patchs.

Mais j'ai réussi à faire un clone simple, commis quelques changements et poussé les modifications de retour à l' (nu clone) d'origine.

Il fait sens pour moi - je veux dire pourquoi pas? lorsque la cloné TÊTE est identifiable dans l'origine, et mon commit vient sur le dessus de cela, il n'y a aucune raison. Mais le manuel dit le contraire.

J'aime l'idée du clone simple - par exemple de base de drupal: je n'ai aucunement besoin de savoir ce qui s'est passé dans drupal 4 quand j'ai commencé à partir de 7. - mais je ne veux pas me tirer une balle dans le pied.

Ainsi en est-il sécuritaire de clone simple, s'engage à développer, tirer de nouveau pour suivre les mises à jour à partir de l'origine?

334voto

VonC Points 414372

Notez que Git 1.9/2.0 (T1 2014) a supprimé cette limitation.
Voir commettre 82fba2b, de Nguyễn Thái Ngọc Duy (pclouds):

Maintenant que git prend en charge le transfert de données ou à partir d'un clone simple, ces limitations ne sont pas plus vrai.

La documentation se lit maintenant:

--depth <depth>::

Créer un "shallow" clone avec une histoire tronquée pour le nombre spécifié de révisions.

Qui en découle s'engage comme 0d7d285, f2c681c, et c29a7b8 qui soutiennent clone, envoyez-pack /receive-pack avec/de faible clones.
smart-http prend désormais en charge superficielle d'extraction/clone trop.

Tous les détails sont dans "shallow.c: les 8 étapes pour sélectionner de nouveaux commits .git/shallow".

6voto

Philip Oakley Points 3825

Voir la réponse à ma question similaire, pourquoi-cant-i-push-de-un-peu profonde clone et le lien avec le récent sujet sur le git de la liste.

En fin de compte, la "profondeur" de la mesure n'est pas compatible entre repos, parce qu'ils mesurent à partir de leurs Têtes, plutôt que (un) de votre Tête, ou (b) le commit(s) vous cloné/les cheveux, ou (c) quelque chose d'autre que vous aviez en tête.

Le dur bit est l'obtention d'un Cas d'Utilisation à droite (c'est à dire auto-cohérent), de sorte que distribué, et donc probablement divergentes repos fonctionnera toujours heureux ensemble.

Il ne ressemble à l' checkout --orphan est le droit "set-up", mais il manque encore propre (c'est à dire un simple compréhensible une ligne de commande) des indications sur le "clone" de l'étape. Plutôt, il semble que vous avez d' init les pensions de titres, mettre en place un remote suivi de la branche (vous ne voulez pas une seule branche?), et puis, fetch que seule branche, qui se sent de longue haleine avec plus de possibilités d'erreurs.

Edit: Pour le "clone" de l'étape voir cette réponse

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X