Undo git pull, jak przywrócić repos do starego stanu
Czy Jest jakiś sposób, aby przywrócić lub cofnąć git pull tak, że moje źródło / repos powróci do starego stanu, który był przed wykonaniem git pull ? Chcę to zrobić, ponieważ połączył niektóre pliki, których nie chciałem robić, ale tylko scalić inne pozostałe pliki. Chcę odzyskać te akta, czy to możliwe ? Dzięki:)
EDIT chcę cofnąć Git merge dla wyjaśnienia. Po obejrzeniu kilku odpowiedzi, zrobiłem to
git reflog
bb3139b... HEAD@{0}: pull : Fast forward
01b34fa... HEAD@{1}: clone: from ...name...
Co mam teraz zrobić ? Robienie git reset --hard
jest w porządku ? Nie chcę się pieprzyć. to znowu, więc prosząc o szczegółowe kroki ? 8 answers
git pull
zrobi dwie rzeczy: robi git fetch
, a następnie git merge
, gdzie łączy gałęzie, które zostały skonfigurowane do scalenia w Twoim config.
Więc to, co chcesz zrobić, to cofnąć połączenie (cofanie pobierania nie ma większego sensu i nie powinno być konieczne).
Aby to zrobić, możesz spróbować użyć git reset --hard
, aby zresetować poprzedni stan. Użyj git-reflog , aby znaleźć SHA-1 poprzedniego stanu, a następnie zresetować go.
Ostrzeżenie: git reset --hard
usuwa wszystkie niezakontraktowane zmiany.
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-03-21 06:46:09
To samo co odpowiedź jkp, ale tu jest pełna Komenda:
git reset --hard a0d3fe6
Gdzie a0d3fe6 znajduje się wykonując
git reflog
I patrząc na punkt, w którym chcesz cofnąć.
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-07-22 00:39:44
Bardziej nowoczesnym sposobem na cofnięcie połączenia jest:
git merge --abort
I nieco starszy sposób:
git reset --merge
Old-school sposób opisany w poprzednich odpowiedziach (Ostrzeżenie: odrzuci wszystkie lokalne zmiany):
git reset --hard
Ale właściwie, warto zauważyć, że git merge --abort
jest tylko równoważne git reset --merge
biorąc pod uwagę, że MERGE_HEAD
jest obecny. Można to odczytać w Komendzie Git help for merge.
git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present.
Po nieudanym połączeniu, gdy nie ma MERGE_HEAD
, nieudane połączenie można cofnąć za pomocą git reset --merge
, ale niekoniecznie z git merge --abort
, są więc nie tylko starą i nową składnią dla tego samego . Dlatego uważam, że git reset --merge
jest o wiele bardziej przydatny w codziennej pracy.
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-05-20 09:17:49
To działa
pierwsze użycie: git reflog
Znajdź swój SHA z Państwa previus I make (HEAD@{1} jest przykładem)
git reset --hard HEAD@{1}
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-03-08 17:00:48
Jeśli masz gitk (spróbuj uruchomić "gitk --all from your Git command line"), to jest to proste. Po prostu uruchom go, wybierz commit, który chcesz wycofać (kliknij prawym przyciskiem myszy) i wybierz "Resetuj gałąź główną tutaj". Jeśli nie masz niezakontraktowanych zmian, wybierz opcję "twardy".
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
2009-08-03 16:49:24
Załóżmy, że $COMMIT
był ostatnim identyfikatorem zatwierdzenia przed wykonaniem git pull
.
To, czego potrzebujesz, aby cofnąć ostatnie pociągnięcie, to
git reset --hard $COMMIT
.
Bonus:
Mówiąc o ciągnięciu, chciałbym podzielić się ciekawą sztuczką.]}git pull --rebase
Powyższa komenda jest najbardziej użyteczną komendą w moim życiu Gita, która zaoszczędziła dużo czasu.
Przed naciśnięciem nowego commita na serwer, wypróbuj to polecenie, które automatycznie zsynchronizuje najnowsze zmiany na serwerze (z fetch + merge) i umieści Twój commit na górze w git log. Nie musisz się martwić ręcznym ciągnięciem / scalaniem.
Znajdź szczegóły na: http://gitolite.com/git-pull--rebase
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-12-23 15:55:03
You can do git reset --hard ORIG_HEAD
Ponieważ "pull" lub "merge" ustawia ORIG_HEAD jako bieżący stan przed wykonaniem tych działań.
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-08-19 17:02:41
Jeśli doszło do nieudanego scalenia, co jest najczęstszym powodem chęci cofnięcia git pull
, uruchomienie git reset --merge
robi dokładnie to, czego można się spodziewać: zatrzymuje pobrane pliki, ale cofa scalenie, które git pull
próbowało scalić. Wtedy można zdecydować, co zrobić bez bałaganu, który git merge
czasami generuje. I nie trzeba go znaleźć, aby znaleźć dokładny identyfikator commita, który --hard
jest wymieniony w każdej innej odpowiedzi.
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-09-24 17:35:12