Se utilizzi Git dalla riga di comando, c'è un modo per eliminare in un colpo solo tutti i file da eliminare nell'elenco Modificato ma non aggiornato? Piuttosto che fare rimuove manualmente usando i caratteri jolly.Git - rm equivalente per "add."?
risposta
I file visualizzati come eliminati nella sezione "Modificati ma non aggiornati" vengono cancellati dall'albero di lavoro ma non dall'indice. Di mettere in scena la cancellazione nell'indice (cioè rimuovere il file dall'indice) si può fare:
git diff -z --name-only --diff-filter=D | git update-index --remove -z --stdin
--diff-filter=D
mostra solo le differenze per l'indice che vengono eliminati i file, --name-only
si limita a stampare il loro nome e -z
utilizza NUL a nomi di file separati in modo da non doversi preoccupare di nomi di file con nuove righe incorporate. update-index
quindi rimuove i file specificati dall'indice.
Se si dispone di una versione di xargs
che supporta -0
allora si potrebbe fare il leggermente più semplice:
git diff -z --name-only --diff-filter=D | xargs -0 git rm
Grazie, ha funzionato. – Steve
Bene, i file elencati sotto modificati ma non aggiornati sono già presenti nell'indice. È possibile annullare le modifiche utilizzando git checkout .
Per rimuovere file nuovi, ma che non sono stati aggiunti all'indice, è possibile utilizzare git clean
.
Ma per eliminare i file modificati e nell'indice ... beh, non esiste una soluzione facile, probabilmente è necessario utilizzare una combinazione di git rm
e git ls-files
.
EDIT:
git ls-files -m
dovrebbe elencare i file che stai cercando. Combinate con git rm
e si è fatto:
git-ls files -m | xargs git rm // NOT TESTED
EDIT:
probabilmente ho capito male una parte della tua domanda. La mia soluzione cancellerà tutti i file elencati sotto Modificato ma non aggiornato. Se si desidera rimuovere i file elencati come cancellati, è necessario utilizzare git diff
come mostra Charles Bailey nella sua risposta.
Grazie. Quindi come combineresti? git rm
'git ls-files -m' elenca tutti i file modificati, non solo quelli cancellati. Non penso che tu voglia cancellare tutti i file modificati, solo quelli cancellati dall'albero di lavoro. –
@Charles: sì hai ragione - ed è proprio così che ho capito la domanda. Ma probabilmente hai ragione e questo non è ciò che l'OP vuole ... ho il mio +1 per averlo raccolto fino a – tanascius
Il seguente dovrebbe organizzare tutti i file, sia cancellato o meno, nell'indice:
git add -A
Questa è la risposta rapida che sono sicuro che tutti stiano cercando. –
Si noti che 'git commit -a' avrebbe tutti i file tracciati che sono stati rimossi anche rimossi nel commit. Solo FYI. –
'git commit -a' aggiunge solo file: è ciò che la maggior parte delle persone, incluso me stesso, ha utilizzato. La risposta è 'git commit -A'. Metterà in scena gli elementi da aggiungere e gli elementi dello stage da eliminare allo stesso tempo! Vedi la risposta di Sujoy sotto. –