2011-01-09 6 views
113

Ho erroneamente aggiunto file usando il comando "git add dir". Non ho ancora eseguito "Git commit". C'è un modo per rimuovere questa directory e tutto ciò che è contenuto al suo interno dal commit?Annulla "git add <dir>"?

Ho provato git reset dir, ma non ha funzionato. Apparentemente git reset file è il modo per annullarlo. Ma ho così tanti file e così poco tempo.

+3

'git reset ' aggiorna l'indice per quel percorso in modo che corrisponda a 'HEAD' (il commit corrente). Non tocca l'albero di lavoro. – Cascabel

risposta

182

per rimuovere una directory e tutto il suo interno dall'indice,

git rm --cached -r dir

l'interruttore --cached rende git rm ope votare solo sull'indice e non toccare la copia di lavoro. Lo switch -r lo rende ricorsivo.

+0

questo comando ha funzionato per me. Grazie. – neoneye

+9

"Per rimuovere l'intera directory staged dall'indice" sarebbe una spiegazione leggermente migliore del comando git, dato che per i principianti di Git come me il comando assomiglia molto se addirittura cancellasse la directory sul file system. Solo per questione di gusti. –

+0

Ecco perché ho messo in grassetto l'opzione '--cached'. Tuttavia, ho modificato la risposta in modo da renderla valida solo per l'indice. –

14

si desidera utilizzare git rm --cached -r <dir>. questo comando rimuoverà il contenuto della directory di staging dall'indice.

se la directory è già stato rintracciato dovete trovare i file vecchi e nuovi manualmente e unstage ...

probabilmente eseguito git reset <dir> dopo che per resettare esistente (e già cingolato) i file all'interno della directory

+0

Questo ha funzionato per me –