Miten voin peruuttaa 'git add' ennen sitoutumista?

Lisäsin virheellisesti tiedostoja Gitiin komennolla:

git add myfile.txt

En ole vielä suorittanut git commit. Onko olemassa keino kumota tämä, jotta näitä tiedostoja ei otettaisi mukaan committiin?

Ratkaisu

Voit kumota git add ennen sitoutumista komennolla

git reset 

mikä poistaa sen nykyisestä indeksistä ("about to be commit" -listasta) muuttamatta mitään muuta.

Voit käyttää

git reset

ilman tiedostonimeä, jos haluat poistaa kaikki muutokset. Tämä voi olla kätevää silloin, kun tiedostoja on liian paljon, jotta ne voitaisiin listata yksi kerrallaan kohtuullisessa ajassa.

Vanhoissa Git-versioissa edellä mainitut komennot vastaavat git reset HEAD ja git reset HEAD, ja ne epäonnistuvat, jos HEAD on määrittelemätön (koska et ole vielä tehnyt yhtään komennusta arkistoosi) tai moniselitteinen (koska olet luonut haaran nimeltä HEAD, mikä on typerä asia, jota ei pitäisi tehdä). Tämä muutettiin kuitenkin Git 1.8.2:ssa, joten nykyaikaisissa Git-versioissa voit käyttää edellä mainittuja komentoja jo ennen kuin olet tehnyt ensimmäisen toimituksen:

"git reset" (ilman asetuksia tai parametreja) käytettiin virheeseen, kun sinulla ei ole yhtään komitusta historiassasi, mutta nyt se antaa sinulle tulokseksi tyhjän indeksin (joka vastaa olemattomia sitoumuksia, joissa et edes ole).

Kommentit (11)

Jos kirjoitat:

git status

Git kertoo sinulle, mikä on porrastettu jne., mukaan lukien ohjeet porrastuksen purkamiseen:

use "git reset HEAD ..." to unstage

Minusta Git tekee aika hyvää työtä tuuppaamalla minua tekemään oikein tällaisissa tilanteissa.

Huomautus: Viimeisimmät Git-versiot (1.8.4.x) ovat muuttaneet tätä viestiä:

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

Tähän voidaan käyttää git remove tai git rm -lippulauseen --cached kanssa. Kokeile:

git help rm
Kommentit (2)