Utiliser git pour obtenir uniquement la dernière révision

380

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 pouvoir mettre à jour les nouvelles révisions du projet distant.

J'ai essayé d'utiliser git clone, mais cela crée une copie de l'ensemble du référentiel (taille de fichier énorme), et le suivi des modifications rend l'espace disque encore plus grand (100 Mo de fichiers occupent désormais plus de 2 Go).

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.

Est-ce possible dans git?

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

Réponses:

552

Utilisez l' --depthoption dans git clone:

Créez un clone superficiel avec un historique tronqué au nombre spécifié de validations.

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

Greg Hewgill
la source
87
exemple:git clone --depth=1 <remote_repo_url>
iDev247
14
Depuis commit 82fba2b dans git 1.9, ces limitations n'existent plus.
niutech
1
Quelles limitations?
Ignorant
4
@Triangles: Limitations (plus d'actualité): Un référentiel peu profond a un certain nombre de limitations (vous ne pouvez pas le cloner ou le récupérer, ni y pousser ni le pousser), 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 voudrait envoyer des correctifs sous forme de correctifs.
odinho - Velmont
1
L'option été ajoutéegit 1.8.4 .
ivan_pozdeev
79

Une autre solution pour faire clone ( git clone --depth=1 <URL>) superficiel serait, si le côté distant le supporte, d'utiliser l' --remoteoption d' archive git :

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

Ou, si le référentiel distant en question peut être parcouru à l'aide d'une interface Web telle que gitweb ou GitHub, il est possible qu'il dispose de la fonction `` instantané '', et vous pouvez télécharger la dernière version (sans informations de version) à partir de l'interface Web.

Jakub Narębski
la source
4
Cette solution ne satisfera cependant pas cette exigence: "Je veux pouvoir mettre à jour les nouvelles révisions du projet distant". Puisqu'il télécharge essentiellement l'archive, il ne pourra pas avancer rapidement d'un commit ou deux. "Clone peu profond" le permet. Pourtant, je suppose que cette solution a ses cas d'utilisation, il vaut donc la peine d'être mentionné.
VasiliNovikov