Hogyan vonhatom vissza a 'git add' -t commit előtt?

Tévesen adtam hozzá fájlokat a Githez a parancs segítségével:

git add myfile.txt

Még nem futtattam a git commit parancsot. Van rá mód, hogy ezt visszacsináljam, hogy ezek a fájlok ne kerüljenek bele a commitba?

Megoldás

Visszacsinálhatod a git add-t a commit előtt a következővel

git reset 

ami eltávolítja az aktuális indexből (a "about to be commit" listából) anélkül, hogy bármi mást megváltoztatna.

Használhatja a

git reset

fájlnév nélkül, hogy az összes esedékes módosítást visszavonja. Ez akkor jöhet jól, ha túl sok fájl van ahhoz, hogy ésszerű idő alatt egyesével felsoroljuk őket.

A Git régi verzióiban a fenti parancsok a git reset HEAD és a git reset HEAD parancsokkal egyenértékűek, és sikertelenek lesznek, ha a HEAD nem definiált (mert még nem csináltál commitot a repositoryban) vagy nem egyértelmű (mert létrehoztál egy HEAD nevű ágat, ami egy hülyeség, amit nem szabadna csinálni). Ez a Git 1.8.2-ben azonban megváltozott, így a Git modern verzióiban már az első commit elkészítése előtt is használhatod a fenti parancsokat:

"git reset" (opciók vagy paraméterek nélkül) régen hibaüzenet volt, amikor ha nincs egyetlen commit sem az előzmények között, de most már a következő eredményt adja egy üres indexet (a nem létező commithoz, amin még csak nem is vagy).

Kommentárok (11)

Ha beírja:

git status

A Git megmondja, hogy mi van staged, stb., beleértve a stage feloldásának utasításait is:

use "git reset HEAD ..." to unstage

Úgy találom, hogy a Git elég jó munkát végez abban, hogy az ilyen helyzetekben a helyes dolgokra ösztökéljen.

Jegyzet: A legújabb Git verziók (1.8.4.x) megváltoztatták ezt az üzenetet:

(use "git rm --cached ..." to unstage)
Kommentárok (3)

A git remove vagy git rm használható erre a célra, a --cached jelzővel. Próbáld ki:

git help rm
Kommentárok (2)