Eliminazione di file utilizzando Git / GitHub


115

Prima di tutto, sono nuovo su Git.

Ho cancellato un sacco di file localmente sul mio Mac usando Finder. Voglio che i file che ho eliminato non vengano più visualizzati nel ramo corrente, ma lo fanno.

Qualche utente Git conosce un comando per aggiornare l'indice?


Risposte:


226

Penso che questo sarebbe un modo più semplice per fare quello che vuoi:

git add . -A 

Quindi dovresti semplicemente fare:

git commit -m "removed some files"

Come sopra annotato.


Grazie. E avevo appena scritto l'alias bashper fare quanto sopra. Sorprendente.
Zack

12
Cosa fa la bandiera -A?
Kim Prince,

1
@KimPrince - Secondo kernel.org , "-A --all Like -u, ma confronta <filepattern> con i file nell'albero di lavoro in aggiunta all'indice. Ciò significa che troverà nuovi file e metterà in scena il contenuto modificato e rimuovere i file che non sono più nell'albero di lavoro. "
j08691

3
@KimPrince git help addti dirà cosa -Asignifica ed elenca anche tutti gli altri interruttori.
Marcin Orlowski

1
Questo fa molto di più che rimuovere i file eliminati. Aggiunge tutti i file che vengono modificati nella directory, quindi questa non è davvero una risposta soddisfacente.
Alex

19

Puoi vedere i file eliminati, che sono ancora "tracciati" con:

git ls-files --deleted

Per eliminare file da un ramo, puoi fare qualcosa del genere:

git ls-files --deleted -z | xargs -0 git rm

Da man git-rm:

Rimuovere i file dall'indice o dall'albero di lavoro e dall'indice. git-rm non rimuoverà un file solo dalla directory di lavoro. (Non c'è alcuna opzione per rimuovere un file 13 solo dall'albero di lavoro e mantenerlo nell'indice; usa / bin / rm se vuoi farlo.)

Infine, per eseguire il commit della "rimozione", fai qualcosa come:

git commit -m "removed some files"

Quindi devi effettuare il cambiamento -git commit -m "removed some files"
James Polley

17

Non so se questo sia stato aggiunto a git dalle risposte precedenti, ma ho appena usato

git add -u
git commit -m "Removed some files"

per ottenere la stessa cosa.


Funziona per i casi d'uso elencati, ma non si limita ad aggiungere l'eliminazione dei file. Aggiunge tutti i file che sono stati modificati in alcun modo, quindi questo non è generalmente un buon modo per rimuovere tutti i file eliminati a meno che non siano le uniche modifiche apportate.
Alex

2
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch deletefile.name' --prune-empty --tag-name-filter cat -- --all
git commit -m "Removed deletefile.name"
git push origin master --force

Sostituisci deletefile.name con il file da rimuovere. Per una spiegazione dettagliata approfondita, consultare il bell'articolo https://help.github.com/articles/remove-sensitive-data

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.