Esportazione / Archiviazione file modificati solo in Git
Domanda
C'è un modo semplice per esportare / archiviare solo i file modificati da un dato commettere o serie di commit in Git? Non riesco a trovare le istruzioni chiare per fare questo (e io sono nuovo a Linux / Git).
Sto usando msysgit, e per la maggior parte sto bene con la distribuzione di interi repository ma in molti casi è molto più efficiente per distribuire piccole correzioni di alcuni file alla volta.
Spingendo / tirare / installazione git sui server remoti non è davvero un'opzione come il mio livello di accesso varia tra progetti e clienti.
C'è un modo straight-forward a (occhio e croce):
pipe 'diff --names-only' to 'git-archive'?
Soluzione
Non credo che ci sia alcuna necessità di coinvolgere git-archivio. Utilizzando --name-only
, si potrebbe tar i file:
tar czf new-files.tar.gz `git diff --name-only [diff options]`
Dal momento che siete nuovi a Linux, questo potrebbe aver bisogno di qualche spiegazione:
I backticks nella riga di comando provocano la shell per eseguire prima il comando all'interno backticks, quindi sostituire l'output di quel comando nella linea di comando di tar
. Così il git diff
viene eseguito per primo, che genera un elenco di nomi di file, uno per ogni riga. Le nuove linee sono ridotti a spazi e l'intero elenco dei file è posto sulla linea di comando tar
. Poi tar
viene eseguito per creare il data archivio. Si noti che questo può generare linee di comando molto lunghi, quindi, se si dispone di un gran numero di file modificati potrebbe essere necessario una tecnica diversa.