2011-01-09 20 views
113

Przez pomyłkę dodałem pliki, używając polecenia "git add dir". Jeszcze nie uruchomiłem "git commit". Czy istnieje sposób na usunięcie tego katalogu i wszystkiego, co zawiera się w nim z commit?Cofnij "git add <dir>"?

Próbowałem już git reset dir, ale to nie zadziałało. Podobno git reset file jest sposobem na jego cofnięcie. Ale mam tak wiele plików i tak mało czasu.

+3

'git reset ' aktualizuje indeks dla tej ścieżki tak, aby pasował do 'HEAD' (bieżącego zatwierdzenia). Nie dotyka drzewa roboczego. – Cascabel

Odpowiedz

182

aby usunąć katalog i wszystko wewnątrz niego z indeksu

git rm --cached -r dir

przełącznik --cached sprawia git rm pos stawki tylko na indeksie i nie dotykaj kopii roboczej. Przełącznik -r powoduje rekurencję.

+0

to polecenie działało dla mnie. Dziękuję Ci. – neoneye

+9

"Aby usunąć cały wystawiony katalog z indeksu" byłoby nieco lepszym wyjaśnieniem polecenia git, ponieważ dla początkujących git, takich jak ja, polecenie wygląda bardzo podobnie, gdyby mogło nawet skasować katalog w systemie plików. Tylko kwestia gustu. –

+0

Dlatego właśnie pogrubiłem przełącznik "--cached". Niemniej jednak zredagowałem odpowiedź, aby się upewnić, że dotyczy ona tylko indeksu. –

14

będziesz chciał użyć git rm --cached -r <dir>. to polecenie usunie zawartość katalogu etapowego z indeksu.

jeśli katalog został już śledzone trzeba ręcznie znaleźć nowe i stare pliki i unstage je ...

prawdopodobnie uruchomić git reset <dir> po to, aby zresetować istniejące (i już śledzone) plików wewnątrz katalogu

+0

To zadziałało dla mnie –