L' --depth 1
option dans git clone
:
Créez un clone superficiel avec un historique tronqué au nombre de révisions spécifié. Un dépôt superficiel a un certain nombre de limitations (vous ne pouvez pas le cloner ou le récupérer, ni le pousser ni le pénétrer), mais il est adéquat si vous n'êtes intéressé que par l'histoire récente d'un grand projet avec une longue histoire et que vous souhaitez envoyer des correctifs sous forme de correctifs.
Mais j'ai réussi à faire un clone superficiel, commis quelques modifications et repoussé ces modifications à l'origine (clone nu).
Cela a du sens pour moi - je veux dire pourquoi pas? lorsque la TÊTE clonée est identifiable à l'origine, et que mon engagement vient s'ajouter à cela, il ne semble pas y avoir de raison. Mais le manuel dit le contraire.
J'aime l'idée du clone peu profond - par exemple du noyau drupal: il n'y a aucun moyen 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.
Est-il donc sûr de cloner peu profondément, de développer des commits, de tirer à nouveau pour suivre les mises à jour depuis l'origine?
la source
--orphan
concept semble similaire et j'ai l'intention d'avoir une pièce de théâtre. Encore un peu énervé que les documents ne correspondent pas à la réalité [parce que pour qui les documents--orphan
sont-ils corrects?!]Réponses:
Notez que Git 1.9 / 2.0 (Q1 2014) a supprimé cette limitation.
Voir commit 82fba2b , de Nguyễn Thái Ngọc Duy (
pclouds
) :La documentation se lit maintenant :
Cela découle de commits comme 0d7d285 , f2c681c et c29a7b8 qui prennent en charge le clone, send-pack / receive-pack avec / à partir de clones peu profonds.
smart-http prend désormais également en charge la récupération / clonage superficiel .
Tous les détails sont dans "
shallow.c
: les 8 étapes pour sélectionner de nouveaux commits.git/shallow
".Mise à jour de juin 2015: Git 2.5 permettra même de récupérer un seul commit !
(Cas superficiel ultime)
Mise à jour de janvier 2016: Git 2.8 (Mach 2016) documente maintenant officiellement la pratique d'obtenir une histoire minimale.
Voir commit 99487cf , commit 9cfde9e (30 déc. 2015), commit 9cfde9e (30 déc. 2015), commit bac5874 (29 déc. 2015) et commit 1de2e44 (28 déc. 2015) par Stephen P. Smith (``) .
(Fusionné par Junio C Hamano -
gitster
- dans commit 7e3e80a , 20 janvier 2016)C'est "
Documentation/user-manual.txt
"Mise à jour 2020:
git fetch --shallow-exclude=
pour empêcher la récupération de tout l'historiquegit fetch --shallow-since=
pour empêcher la récupération des anciens commits.Pour plus d'informations sur le processus de mise à jour de clone superficiel, voir " Comment mettre à jour un clone superficiel git? ".
Comme l'a commenté Richard Michael :
Et Olle Härstedt ajoute dans les commentaires :
la source
Voir certaines des réponses à ma question similaire pourquoi-je-ne-peux-pas-pousser-d'un-clone peu profond et le lien vers le fil récent sur la liste git.
En fin de compte, la mesure de la `` profondeur '' n'est pas cohérente entre les dépôts, car ils mesurent à partir de leurs têtes individuelles, plutôt que (a) votre tête, ou (b) le ou les commit (s) que vous avez cloné / récupéré, ou (c) autre chose tu avais en tête.
Le plus difficile est d'obtenir un cas d'utilisation correct (c'est-à-dire auto-cohérent), de sorte que les dépôts distribués, et donc probablement divergents, fonctionneront toujours ensemble avec bonheur.
Il semble que ce
checkout --orphan
soit la bonne étape de «configuration», mais il manque toujours des instructions claires (c'est-à-dire une simple commande compréhensible sur une ligne) sur l'étape de «clonage». Il semble plutôt que vous deviez effectuerinit
un dépôt, créer uneremote
branche de suivi (vous ne voulez qu'une seule branche?), Puisfetch
cette seule branche, qui semble longue et avec plus de possibilités d'erreurs.Modifier: pour l'étape de «clonage», voir cette réponse
la source