2009-07-30 10 views
263

Je veux suivre un projet qui utilise git. Je ne veux pas cloner le référentiel complet et l'historique complet, je veux juste la dernière révision, et je veux être capable de mettre à jour les nouvelles révisions du projet distant. J'ai essayé d'utiliser git clone, mais cela crée une copie du référentiel entier (taille de fichier énorme), et le suivi des changements rend l'espace disque encore plus grand (100mb de fichiers prend maintenant plus de 2gb). Je ne vais pas soumettre de correctifs, et je n'ai pas besoin de l'historique. Je veux juste la dernière version comme dans subversion.Utiliser git pour obtenir la dernière révision

Est-ce possible dans git?

+2

Git 1.9/2.0 (Q1 2014) sera beaucoup plus efficace avec le clonage peu profond: http://stackoverflow.com/a/21217267/6309 et http://stackoverflow.com/a/21217326/6309 – VonC

Répondre

373

Utilisez l'option --depth dans git clone:

Créer un clone peu profond avec une histoire tronquée au nombre spécifié de commits.

exemple: git clone --depth=1 <remote_repo_url>

+68

exemple: 'git clone --depth = 1 ' – iDev247

+13

Depuis [commit 82fba2b] (https://github.com/git/git/commit/82fba2b9d39163a0c9b7a3a2f35964cbc039e1a) dans git 1.9, ces limitations n'existent plus. – niutech

+1

Cela ne fonctionne pas avec le transport http. – Charles

64

Autre solution pour faire clone peu profond (git clone --depth=1 <URL>) serait, si côté distant supporte, d'utiliser --remote option git archive:

$ git archive --format=tar --remote=<repository URL> HEAD | tar xf - 

Ou, si dépôt distant en question est navigable en utilisant certains interface web comme gitweb ou GitHub, alors il y a une chance qu'il dispose de la fonction «instantané», et vous pouvez télécharger la dernière version (avec sur les informations de version) à partir de l'interface web.

+1

Cette solution ne répondra pas à cette exigence bien que: "Je veux pouvoir mettre à jour aux nouvelles révisions du projet à distance". Comme il télécharge essentiellement l'archive, il ne pourra pas avancer rapidement un commit ou deux. "Shallow clone" le permet. Pourtant, je suppose que cette solution a ses cas d'utilisation, donc digne de mention. – VasyaNovikov

Questions connexes