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.

 926
git
Author: drozzy, 2010-03-24

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.

 1745
Author: Mark Lodato,
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ł.

 102
Author: Dan Fischer,
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.

 33
Author: zainengineer,
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

 2
Author: omilus,
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