Come faccio ad annullare 'git add' prima del commit?

Ho aggiunto erroneamente dei file a Git usando il comando:

git add myfile.txt

Non ho ancora eseguito git commit. C'è un modo per annullarlo, così questi file non saranno inclusi nel commit?

Soluzione

Puoi annullare git add prima del commit con

git reset 

che lo rimuoverà dall'indice corrente (l'elenco "circa da commettere") senza cambiare nient'altro.

Potete usare

git reset

senza alcun nome di file per annullare tutte le modifiche dovute. Questo può essere utile quando ci sono troppi file da elencare uno per uno in un tempo ragionevole.

Nelle vecchie versioni di Git, i comandi di cui sopra sono equivalenti a git reset HEAD e git reset HEAD rispettivamente, e falliranno se HEAD è indefinito (perché non hai ancora fatto alcun commit nel tuo repository) o ambiguo (perché hai creato un ramo chiamato HEAD, che è una cosa stupida che non dovresti fare). Questo è stato cambiato in Git 1.8.2, però, quindi nelle versioni moderne di Git puoi usare i comandi di cui sopra anche prima di fare il tuo primo commit:

"git reset" (senza opzioni o parametri) usato per dare errore quando non hai alcun commit nella tua storia, ma ora ti dà un indice vuoto (per corrispondere a commit inesistenti su cui non siete nemmeno).

Commentari (11)

Se si digita:

git status

Git vi dirà cosa è in scena, ecc., incluse le istruzioni su come annullare la scena:

use "git reset HEAD ..." to unstage

Trovo che Git faccia un buon lavoro per spingermi a fare la cosa giusta in situazioni come questa.

Nota: Le recenti versioni di Git (1.8.4.x) hanno cambiato questo messaggio:

(use "git rm --cached ..." to unstage)
Commentari (3)

git remove o git rm possono essere usati per questo, con il flag --cached. Prova:

git help rm
Commentari (2)