Właśnie usunąłem niewłaściwą gałąź z pewnymi zmianami eksperymentalnymi, których potrzebuję z git branch -D branchName
.Git cofnąć lokalny oddział usunąć
Jak mogę odzyskać oddział?
Właśnie usunąłem niewłaściwą gałąź z pewnymi zmianami eksperymentalnymi, których potrzebuję z git branch -D branchName
.Git cofnąć lokalny oddział usunąć
Jak mogę odzyskać oddział?
Możesz użyć numeru git reflog, aby znaleźć SHA1 ostatniego zatwierdzenia oddziału. Od tego momentu można odtworzyć oddział używając
git branch branchName <sha1>
Edycja: Jak mówi @seagullJS, komenda branch -D
mówi ci SHA1, więc jeśli nie zostały jeszcze zamknięte terminal staje się naprawdę proste. Na przykład ta kasuje i natychmiast przywraca oddział nazwany master2
:
[email protected] /C/MyRepo (master)
$ git branch -D master2
Deleted branch master2 (was 130d7ba). <-- This is the SHA1 we need to restore it!
[email protected] /C/MyRepo (master)
$ git branch master2 130d7ba
pierwsze: z powrotem cała katalogu, w tym katalogu .git.
Po drugie: Można użyć numeru git fsck --lost-found
, aby uzyskać identyfikator utraconego zatwierdzenia.
Po trzecie: rebase lub scalenie na utracone zatwierdzenie.
czwarte: Zawsze zastanów się dwa razy przed użyciem -D lub --force z git :)
Można również read this good discussion w jaki sposób odzyskać z tego rodzaju błędu.
EDYCJA: Nawiasem mówiąc, nie uruchamiaj git gc
(lub pozwól, aby działał sam - tzn. Nie uruchamiaj git fetch
lub czegoś podobnego) lub możesz utracić swoje zobowiązanie na zawsze.
Jeśli nie naciskać jeszcze usunięcie, można po prostu zrobić:
$ git checkout deletedBranchName
Ta odpowiedź powoduje, że rozszerzenia Git są zamknięte, ponieważ "gałąź, którą próbujesz przesłać, wydaje się być nowym oddziałem dla tego pilota". Wielkie dzięki. – Omer
Jeśli po prostu usunięte gałąź, widać coś takiego w swoim terminalu:
Deleted branch branch_name(was e562d13)
- gdzie e562d13 jest unikalnym identyfikatorem (zwanym również "SHA" lub "hash"), dzięki czemu można przywrócić usuniętą gałąź.
Aby przywrócić oddziału, zastosowanie:
git checkout -b <branch_name> <sha>
np:
git checkout -b branch_name e562d13
Dzięki, to działało.
git branch new_branch_name
sha1
git checkout new_branch_name
// widzę stare sprawdzone w plikach na moim starym oddziale
Dobrze jest wiedzieć, że nie jestem jedynym lame- o kto to zrobił (i zapomniał regularnie przesuwać do odległej kopii) – Ray
, który sprawia, że 3 z nas teraz –