2010-05-04 15 views

risposta

21

So che questo è vecchio, ma penso di aver trovato una soluzione.

Run:

stashName=`git stash create`; 
git archive <options> $stashName 

Dal git vuole una solida impegnano a fare un archivio, possiamo fare un 'una tantum' commettere utilizzando git stash. Il comando create crea semplicemente il commit di stash (non ripristina la directory di lavoro o lo inserisce nello stack di riserva) e restituisce l'hash per esso.

Se si è preoccupati per lo spazio dal commit pendenti, è possibile pulirlo con un git gc --prune=now. Altrimenti, aspetta solo 2 settimane e scomparirà.

+0

funziona bene, grazie! –

2

Se non si sono impegnati i cambiamenti, allora git archive non sarà di aiuto. Se vuoi solo un'istantanea della tua area di lavoro, la tua scommessa migliore è probabilmente la tar.

11

Migliorare la risposta di nevsan per il mio scopo - per archiviare ultimo codice in ogni caso (commesso o no):

uploadStash=`git stash create`; git archive -o code_outgoing.zip ${uploadStash:-HEAD} 
+3

Risolto un errore: git stash create [now] restituisce sempre correttamente e non stampa nulla quando non ci sono file da riporre. Usa la sintassi di $ {var: -default} bash invece di fare affidamento sul codice di uscita. –

+0

IIRC c'è un problema con questo, non elimina i file git-removed dall'archivio. –

3

Un'altra soluzione con git ls-files:

git ls-files -z | xargs -0 tar -czvf archive.tar.gz 
+1

Questa è, a mio avviso, la migliore risposta. Tuttavia, consiglierei di usare l'opzione -z di ls-files e l'opzione -0 (zero) di xargs in modo tale che i nomi file con spazi siano gestiti correttamente: git ls-files -z | xargs -0 tar -czvf archive.tar.gz . – S2108887

+0

Hai assolutamente ragione! Grazie. Ho aggiunto queste opzioni alla riga di comando. –

+0

'git ls-files | tar Tczf - archive.tar.gz' non ha limiti imposti dal sistema sulla dimensione degli argomenti di un singolo comando. xargs non va bene per qualsiasi comando che devi veramente eseguire solo una volta per tutto. – jthill

Problemi correlati