Jak mogę cofnąć 'git add' przed commitem?

Przez pomyłkę dodałem pliki do Gita używając polecenia:

git add myfile.txt

Nie uruchomiłem jeszcze git commit. Czy jest jakiś sposób, aby to cofnąć, aby te pliki nie były uwzględnione w commicie?

Rozwiązanie

Możesz cofnąć git add przed commitem używając

git reset 

co spowoduje usunięcie go z bieżącego indeksu (lista "about to be committed") bez zmiany czegokolwiek innego.

Możesz użyć

git reset

bez podania nazwy pliku, aby odinstalować wszystkie należne zmiany. Może się to przydać, gdy jest zbyt wiele plików, aby wylistować je jeden po drugim w rozsądnym czasie.

W starych wersjach Gita, powyższe komendy są odpowiednikami odpowiednio git reset HEAD i git reset HEAD i zawiodą, jeśli HEAD jest niezdefiniowane (ponieważ nie wykonałeś jeszcze żadnych commitów w swoim repozytorium) lub niejednoznaczne (ponieważ utworzyłeś gałąź o nazwie HEAD, co jest głupią rzeczą, której nie powinieneś robić). To zostało zmienione w Git 1.8.2, więc w nowoczesnych wersjach Git możesz używać powyższych komend nawet przed dokonaniem pierwszego commitu:

"git reset" (bez opcji i parametrów) używane do wyrzucania błędów, gdy. nie masz żadnych commitów w swojej historii, ale teraz daje ci pusty indeks (aby dopasować nieistniejący commit, na którym nawet nie jesteś).

Komentarze (11)

Jeśli wpiszesz:

git status

Git powie Ci, co jest wystawione, itd., łącznie z instrukcjami, jak to zrobić:

use "git reset HEAD ..." to unstage

Uważam, że Git wykonuje całkiem niezłą robotę, skłaniając mnie do robienia właściwych rzeczy w sytuacjach takich jak ta.

Uwaga: Ostatnie wersje Git (1.8.4.x) zmieniły tę wiadomość:.

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

git remove lub git rm mogą być użyte do tego celu, z flagą --cached. Spróbuj:

git help rm
Komentarze (2)