Ako zruším 'git add' pred odovzdaním?

Omylom som pridával súbory do systému Git pomocou príkazu:

git add myfile.txt

Zatiaľ som nespustil git commit. Dá sa to nejako vrátiť späť, aby tieto súbory neboli zahrnuté do revízie?

Riešenie

Pred odovzdaním môžete zrušiť git add pomocou

git reset 

čím ho odstránite z aktuálneho indexu (zoznam "about to be commit") bez toho, aby ste zmenili čokoľvek iné.

Môžete použiť

git reset

bez názvu súboru, aby ste zrušili všetky zmeny. To sa môže hodiť, keď je príliš veľa súborov na to, aby sa dali v rozumnom čase vypísať jeden po druhom.

V starých verziách systému Git sú vyššie uvedené príkazy ekvivalentné príkazom git reset HEAD, resp. git reset HEAD a zlyhajú, ak je príkaz HEAD nedefinovaný (pretože ste v úložisku ešte neurobili žiadne revízie) alebo nejednoznačný (pretože ste vytvorili vetvu s názvom HEAD, čo je hlúposť, ktorú by ste nemali'robiť). Toto však bolo zmenené v Git 1.8.2, takže v moderných verziách Gitu môžete vyššie uvedené príkazy použiť ešte pred vykonaním prvej revízie:

(bez volieb alebo parametrov) sa používa na chybu, keď nemáte v histórii žiadne revízie, ale teraz vám poskytne prázdny index (aby zodpovedal neexistujúcej revízii, na ktorej ani nie ste).

Komentáre (11)

Ak zadáte:

git status

Git vám povie, čo je naštartované atď., vrátane návodu, ako zrušiť štartovanie:

use "git reset HEAD ..." to unstage

Zistil som, že systém Git odvádza celkom dobrú prácu, keď ma v takýchto situáciách nabáda, aby som urobil správnu vec.

Poznámka: Posledné verzie systému Git (1.8.4.x) túto správu zmenili:

(use "git rm --cached ..." to unstage)
Komentáre (3)

Na tento účel možno použiť git remove alebo git rm s príznakom --cached. Vyskúšajte:

git help rm
Komentáre (2)