Jak przywrócić "git rm-r"?
Przypadkowo powiedziałem git rm -r .
. Jak po tym wyzdrowieć?
Myślę, że wszystkie pliki zostały oznaczone do usunięcia i zostały fizycznie usunięte z mojej lokalnej kasy.
EDIT: mógłbym (gdybym znał komendę) powrócić do ostatniego commita. Ale byłoby o wiele lepiej, gdybym mógł po prostu cofnąć git rm -r .
. Ponieważ nie jestem do końca pewien, co zrobiłem po ostatnim commicie i przed git rm -r .
.
11 answers
git reset HEAD
Powinien to zrobić. Jeśli nie masz żadnych niezarejestrowanych zmian, na których Ci zależy, to
git reset --hard HEAD
Powinien przymusowo zresetować wszystko do ostatniego commita. Jeśli masz niezarejestrowane zmiany, ale pierwsze polecenie nie działa, Zapisz niezarejestrowane zmiany za pomocą git stash
:
git stash
git reset --hard HEAD
git stash pop
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-24 02:56:49
Wykonałem git - rm kilka plików i zacząłem wprowadzać zmiany przed następnym commitem, kiedy zdałem sobie sprawę, że potrzebuję części z tych plików z powrotem. Zamiast przechowywać i resetować, możesz po prostu sprawdzić poszczególne pliki, które przegapiłeś / usunąłeś, jeśli chcesz:
git checkout HEAD path/to/file path/to/another_file
Pozostawia to inne niezakontraktowane zmiany nienaruszone bez obejścia.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-17 19:41:26
Aby odzyskać pojedyncze pliki lub foldery można użyć następującego
git reset -- path/to/file
git checkout -- path/to/file
Spowoduje to odtworzenie wpisów indeksu dla path/to/file
i odtworzenie pliku tak, jak był w ostatnim zatwierdzeniu, tzn. HEAD
.
Podpowiedź: można przekazać hash commita do obu komend, aby odtworzyć pliki ze starszego commita. Zobacz git reset --help
i git checkout --help
Po szczegóły.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-19 14:54:06
Aktualizacja:
Ponieważ git rm .
usuwa wszystkie pliki w katalogach this I child w roboczej kasie, a także w indeksie, musisz cofnąć każdą z tych zmian:
git reset HEAD . # This undoes the index changes
git checkout . # This checks out files in this and child directories from the HEAD
To powinno robić, co chcesz. Nie ma to wpływu na foldery nadrzędne Twojego kodu pobranego lub indeksu.
Stara odpowiedź, która nie była:
reset HEAD
Wykona sztuczkę i nie usunie niezakontraktowanych zmian dokonanych w plikach.
Potem musisz powtórzyć wszelkie git add
polecenia, które ustawiłeś w kolejce.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-14 22:53:23
Jeśli żadne z powyższych nie zadziała, możesz być w stanie pobrać dane za pomocą sugestii z tego miejsca: http://www.spinics.net/lists/git/msg62499.html
git prune -n
git cat-file -p <blob #>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-28 17:39:23
Jeśli zatwierdziłeś i wypchnąłeś zmiany, możesz to zrobić, aby odzyskać plik
// Replace 2 with the # of commits back before the file was deleted.
git checkout HEAD~2 path/to/file
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-29 21:49:01
Jest już kilka dobrych odpowiedzi, ale mogę zasugerować mało używaną składnię, która nie tylko działa świetnie, ale jest bardzo wyraźna w tym ,co chcesz (nie jest przerażająca lub tajemnicza)
git checkout <branch>@{"20 minutes ago"} <filename>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-28 17:00:13
Undo git RM
git rm file # delete file & update index
git checkout HEAD file # restore file & index from HEAD
Undo git rm-R
git rm -r dir # delete tracked files in dir & update index
git checkout HEAD dir # restore file & index from HEAD
Undo git rm-rf
git rm -r dir # delete tracked files & delete uncommitted changes
not possible # `uncommitted changes` can not be restored.
Uncommitted changes
zawiera not staged changes
, staged changes but not committed
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-06 03:06:57
Pobierz listę commit
git log --oneline
Na przykład, stabilny commit ma hash: 45ff319c360cd7bd5442c0fbbe14202d20ccdf81
git reset --hard 45ff319c360cd7bd5442c0fbbe14202d20ccdf81
git push -ff origin master
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-30 13:37:48
Miałem identyczną sytuację. W moim przypadku rozwiązaniem było:
git checkout -- .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-14 11:11:47
Miałem dokładnie ten sam problem: czyściłem foldery, przestawiałem i przenosiłem pliki. Wpisałem: git RM . i wcisnąć enter; a potem poczuł moje jelita poluzować trochę. Na szczęście nie wpisałem od razu w git commit-m"".
Jednak poniższe polecenie
git checkout .
Przywróciła wszystko i uratowała mi życie.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-27 10:09:49