Cofanie Git reset?
Jaki jest najprostszy sposób na cofnięcie
git reset HEAD~
Dowództwo? Obecnie jedynym sposobem, jaki mogę wymyślić, jest wykonanie " git clone http://..."od zdalnego repo.
4 answers
Krótka odpowiedź:
git reset 'HEAD@{1}'
Długa odpowiedź:
Git prowadzi rejestr wszystkich aktualizacji ref (np. checkout, reset, commit, merge). Możesz go zobaczyć wpisując:
git reflog
Gdzieś na tej liście jest commit, który zgubiłeś. Załóżmy, że właśnie wpisałeś git reset HEAD~
i chcesz to cofnąć. Mój reflog wygląda tak:
$ git reflog
3f6db14 HEAD@{0}: HEAD~: updating HEAD
d27924e HEAD@{1}: checkout: moving from d27924e0fe16776f0d0f1ee2933a0334a4787b4c
[...]
Pierwsza linia mówi, że HEAD
0 pozycji temu (innymi słowy, bieżąca pozycja) to 3f6db14; została uzyskana przez zresetowanie do HEAD~
. Druga linijka mówi HEAD
1 pozycja temu (innymi słowy, stan przed resetem) to d27924e. został on uzyskany przez sprawdzenie konkretnego commita(choć nie jest to teraz ważne). Aby cofnąć reset, Uruchom git reset HEAD@{1}
(lub git reset d27924e
).
Jeśli, z drugiej strony, uruchomiłeś inne polecenia od tego czasu, to commit, którego chcesz nie będzie na górze listy, i będziesz musiał przeszukać reflog
.
Ostatnia uwaga: może być łatwiej spojrzeć na reflog
dla jeśli chcesz usunąć zresetowaną gałąź, powiedz master, a nie HEAD
:
$ git reflog show master
c24138b master@{0}: merge origin/master: Fast-forward
90a2bf9 master@{1}: merge origin/master: Fast-forward
[...]
To powinno mieć mniej hałasu niż ogólne HEAD reflog
.
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-06-08 01:48:58
Stare pytanie, a zamieszczone odpowiedzi działają świetnie. Ale spróbuję z inną opcją.
git reset ORIG_HEAD
ORIG_HEAD
odwołuje się do commita, do którego HEAD
poprzednio się odwoływał.
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-01-25 14:10:41
Moja sytuacja była nieco inna, robiłem to trzy razy.
Aby to cofnąć musiałem to zrobić
git reset HEAD@{3}
Więc powinieneś być w stanie zrobić
git reset HEAD@{N}
Ale jeśli wykonałeś git reset używając
git reset HEAD~3
Będziesz musiał zrobić
git reset HEAD@{1}
As {N} reprezentuje liczbę operacji w Reflogu. Jak zaznaczył marek w komentarzach.
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-09-21 23:56:12
1.Użyj git reflog
, aby uzyskać aktualizację wszystkich referencji.
2.git reset <id_of_commit_to_which_you_want_restore>
3 następnym razem unikaj tego
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-07-05 15:15:38