J'ai un repo git que je voudrais faire une copie peu profonde sur et tirer seulement une seule branche. p>
3 Réponses :
Jakub déjà mentionné a Le clone peu profond de branches sélectionnées est possible , mais assez complexe à faire.
Et il a ajouté:
Notez cependant que, parce que les succursales partagent généralement la majeure partie de leur histoire, le gain de clonant uniquement un sous-ensemble de branches pourrait être plus petit que vous ne le pensez. P> blockQuote>
J'ajouterais que vous ne devriez pas avoir d'outil VCS dans une plaque de production (vous installez uniquement / surveillez ce qui est nécessaire pour la production à exécuter em>).
Doncarchive git code> A> reste le meilleur moyen d'extraire ce dont vous avez besoin, en tant qu'archive (zip code> ougare code>, format que vous pouvez ensuite utiliser sans git, une fois transféré sur le côté de la production ) p>
mise à jour mars 2012: p>
le Le prochain git1.7.10 (avril 2012) vous permettra de cloner une seule branche: p>
xxx pré> Vous pouvez le voir dans
t5500-fetch-pack.sh code> a >:: p>xxx pré> cette fonctionnalité est ensuite corrigée avec: p>
- engager 31b808a03290a4f87c571cc1c61f26d8a03c7025 (Ralf Thielow, Git 1.7.12.3, octobre 2012) li> ul>
Clone --Single Code>: Limitez la récupération RefSpec à une branche extraite h2>Après avoir exécuté "
git clone --Single code>", le référentiel résultant a la valeur par défaut habituelle "+ refs / têtes / *: refs / télécommandes / origine / * code>" Wildcard Fetch Refspec installé, ce qui signifie qu'un "git fetch git "> finira par saisir toutes les autres branches. P>Mettez à jour la Fetch RefSpec pour couvrir uniquement la référence clonée seul pour corriger cela. P> blockQuote>
- commettre 60A5F5F ( JUNIO C HAMANO (
GITSTER CODE>), GIT 2.0.2, Juillet 2014) Li> ul>intégré / clona.c: Détectez un clone à partir d'une étiquette correctement h2>
31b808a (
Clone --Single Code>: limite La Fetch RefSpec à une branche récupérée, 2012-09-20) a essayé de voir si la "branche" donnée à suivre est en réalité une étiquette sur le référentiel à distance en vérifiant avec "refs / tags / code>" mais incorrectement utiliséstrtstr (3) code>; Il est activement tort de traiter une "branche" "refs / têtes / refues / tags / foo code>" et utilisez la logique pour "refs / tags / code>" Ref Hiérarchie.
Ce que le code voulait vraiment faire est de voir s'il commence par "refs / tags / code>". P> BlockQuote>
Mise à jour Sept 2016:
CLONE GIT CLONE - SINGLE-BRANCHEZ-BRANCHEZ code> fonctionnera pour des balises chaînéesdans GIT 2.11+ (Q4 2016). P> P>
Oui, un clone complet d'une seule branche ne va probablement pas économiser beaucoup, mais je m'attends à ce qu'un clone peu profond d'une seule branche pour se rapprocher de la taille d'une archive GIT, plus permettez-moi de GIT Tirez code>
@Allen: Mais une traction git signifierait avoir un git sur la plate-forme de production, non? Et cela est généralement considéré comme une "mauvaise" pratique.
Vous pouvez simplement faire un clone normal (peu profond) et supprimer plus tard les branches superflues localement (ainsi que les branches à distance de suivi). Vous auriez toujours tout le trafic réseau, mais plus tard, votre espace disque est plus petit. P>
Il peut être difficile de supprimer les fichiers sous-jacents cependant. Vous auriez besoin de remballer et de rejeter le reflètement de reflus, et pruneaux avec la date d'expiration définie pour maintenant.
Versions git récentes (j'ai v2.7.3) Support Clonage peu profond de Une seule branche en appelant:
Je suis désolé ... Vous avez juste répondu à votre propre question ou j'ai mal compris? (
archive git code>)Remarque: j'ai mis à jour ma réponse ci-dessous avec GIT1.7.10 et le nouveau "
git clone-clone -single-branche code>".