2009-07-30 20 views
263

Voglio monitorare un progetto che utilizza git. Non voglio clonare il repository completo e la cronologia completa, voglio solo l'ultima revisione, e voglio essere in grado di aggiornare a nuove revisioni dal progetto remoto.Utilizzare git per ottenere solo la revisione più recente

Ho provato a utilizzare git clone, ma questo crea una copia dell'intero repository (dimensione del file enorme), e il tracciamento delle modifiche rende lo spazio del disco ancora più grande (100 MB di file ora occupa oltre 2 GB).

Non invierò patch e non ho bisogno della cronologia. Voglio solo l'ultima versione come in sovversione.

E 'possibile in git?

+2

Git 1.9/2.0 (Q1 2014) sarà molto più efficiente con clonazione superficiale: http://stackoverflow.com/a/21217267/6309 e http://stackoverflow.com/a/21217326/6309 – VonC

risposta

373

Utilizzare l'opzione --depth in git clone:

Creare un superficiale clone di con una storia troncata al numero specificato di commit.

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

+68

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

+13

Poiché [commit 82fba2b] (https://github.com/git/git/commit/82fba2b9d39163a0c9b7a3a2f35964cbc039e1a) in git 1.9 queste limitazioni non esistono più. – niutech

+1

Questo non funziona con il trasporto http. – Charles

64

soluzione alternativa per fare poco profondo clone (git clone --depth=1 <URL>) sarebbe, se lato remoto lo supporta, per usare --remote possibilità di git archive:

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

O, se repository remoto in questione è in grado di navigare usando l'interfaccia web come gitweb o GitHub, quindi c'è la possibilità che abbia la funzione 'snapshot', e puoi scaricare l'ultima versione (con informazioni sulla versione) dall'interfaccia web.

+1

Questa soluzione tuttavia non soddisfa questo requisito: "Voglio essere in grado di aggiornare le nuove revisioni dal progetto remoto". Dal momento che scarica fondamentalmente l'archivio, non sarà in grado di spostare rapidamente un commit o due. "Il clone superficiale" lo consente. Comunque, credo che questa soluzione abbia i suoi casi d'uso, quindi vale la pena menzionarla. – VasyaNovikov

Problemi correlati