Погрешно добавих файлове в Git, като използвах командата:
git add myfile.txt
Все още не съм стартирал git commit
. Има ли начин да върна това, така че тези файлове да не бъдат включени в commit-а?
Можете да отмените git add
преди предаването с
git reset <file>
което ще го премахне от текущия индекс (списъкът "ще бъде предаден"), без да променя нищо друго.
Можете да използвате
git reset
без име на файл, за да отмените всички дължими промени. Това може да е полезно, когато има твърде много файлове, за да бъдат изброени един по един за разумно време.
В старите версии на Git горните команди са еквивалентни съответно на git reset HEAD <file>
и git reset HEAD
и ще се провалят, ако HEAD
е недефинирано (защото все още не сте'направили никакви промени в хранилището си) или двусмислено (защото сте създали клон, наречен HEAD
, което е глупаво нещо, което не бива'да правите). Това обаче беше променено в Git 1.8.2, така че в съвременните версии на Git можете да използвате горните команди дори преди да сте направили първия си commit:
"git reset" (без опции или параметри) се използваше за грешка, когато нямате никакви предавания в историята си, но сега тя ви дава празен индекс (за да съответства на несъществуващ коммит, на който дори не сте влезли).
Ако въведете:
git status
Git ще ви каже какво е поетапно и т.н., включително инструкции как да го премахнете:
use "git reset HEAD <file>..." to unstage
Смятам, че Git върши доста добра работа, като ме подтиква да постъпвам правилно в подобни ситуации.
Забележка: Последните версии на Git (1.8.4.x) са променили това съобщение:
(use "git rm --cached <file>..." to unstage)
За тази цел може да се използва git remove
или git rm
с флаг --cached
. Опитайте:
git help rm