Ho un sacco di file modificati nel mio repository git e un gran numero di essi sono file xml. Come faccio a ripristinare le modifiche (ripristino delle modifiche) solo dei file xml?Come ripristinare le modifiche non modificate in un file di un certo tipo in git
risposta
Grazie a tutti per le vostre risposte, ma ho trovato, per me, la soluzione più accurata:
git diff --name-only -- '*.xml' | sed 's, ,\\&,g' | xargs git checkout --
sed è utente di sfuggire spazi che turbavano xargs e tutto funziona molto veloce e preciso.
Non è necessario find
o sed
, è possibile utilizzare i caratteri jolly come git li capisce (non dipende dalla vostra shell):
git checkout -- "*.xml"
Le quotazioni evitare che la shell di espandere il comando da solo file nella directory corrente prima della sua esecuzione.
È possibile anche disattivare l'espansione glob shell (con bash):
set -f
git checkout -- *.xml
Questo, naturalmente, sarà irrimediabilmente cancellare le modifiche!
'*/*. Xml' non è" file xml in tutte le directory ". – wRAR
@wRAR lo trova ... il globbing in git non è molto ben documentato – CharlesB
'**/*. Xml' userà i tuoi globi di shell, quindi i file cancellati non verranno controllati, ma se sono solo modifiche, questo dovrebbe lavoro. – Reactormonk
find . -name '*.xml' -print0 | xargs -0 git checkout HEAD
o qualcosa di equivalente se il sistema non ha find
e xargs
. O solo git checkout HEAD **/*.xml
in zsh
o qualsiasi altra shell con questa forma di globbing reqursive.
vedi la mia risposta, non hai bisogno di tutto questo :) – CharlesB