Wyrzuć lokalne commity w git
Z powodu złego wybierania, moje lokalne repozytorium git jest obecnie o 5 commitów przed oryginałem i nie jest w dobrym stanie. Chcę się pozbyć tych wszystkich commitów i zacząć od nowa.
Oczywiście usunięcie mojego katalogu roboczego i ponowne klonowanie zrobiłoby to, ale ponowne pobranie wszystkiego z Githuba wydaje się przesadą i nie jest dobrym wykorzystaniem mojego czasu.
Może git revert
jest to, czego potrzebuję, ale nie chcę skończyć 10 zobowiązuje się przed początkiem (lub nawet 6), nawet jeśli sam kod wróci do właściwego stanu. Chcę tylko udawać, że ostatnie pół godziny nigdy się nie wydarzyło.
Czy istnieje proste polecenie, które to zrobi? Wydaje się to oczywistym przypadkiem użycia, ale nie znajduję żadnych przykładów.
Zauważ, że to pytanie dotyczy konkretnie , nie o:
- untracked files
- unstaged changes
- zainscenizowane, ale niezakontraktowane zmiany
10 answers
Jeśli Twoje nadmiarowe commity są widoczne tylko dla ciebie, możesz po prostu zrobić git reset --hard origin/<branch_name>
, aby wrócić do miejsca pochodzenia.
Wykonanie git revert
sprawia, że Nowe commity usuwają Stare w sposób, który utrzymuje historię wszystkich przy zdrowych zmysłach.
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-08-18 17:47:59
Po prostu usuń lokalną gałąź master i odtworz ją w ten sposób:
git branch -D master
git checkout origin/master -b 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
2011-02-23 21:38:38
Try:
git reset --hard <the sha1 hash>
Aby zresetować głowę tam, gdzie chcesz być. Użyj gitk, aby zobaczyć, w którym commicie chcesz być. Możesz również zrobić reset w gitk.
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-04-28 15:19:21
Jeśli używasz aplikacji Atlassian SourceTree , możesz użyć opcji reset w menu kontekstowym.
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 20:54:14
Na Twojej gałęzi:
git reset --hard origin/<branch_name>
Zatwierdź odwrócenie (do stanu, bez lokalnych commitów), używając "git log
" lub "git status
".
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-31 15:17:24
Usuń najnowszy commit:
git reset --hard HEAD~1
Usuń najnowszy commit, bez niszczenia wykonanej pracy:
git reset --soft 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
2018-02-11 14:06:16
Aby zobaczyć / uzyskać identyfikator sha1 commita, który również chcesz wrócić
gitk --all
Aby powrócić do tego commita
git reset --hard sha1_id
!Uwaga. Wszystkie commity, które zostały dokonane po tym commicie, zostaną usunięte (i wszystkie Twoje modyfikacje w projekcie). Więc najpierw lepiej Sklonuj projekt do innej gałęzi lub skopiuj do innego katalogu.
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-05-27 10:07:48
git reset --hard @{u}
* usuwa wszystkie lokalne zmiany w bieżącej gałęzi, w tym commity. Dziwię się, że nikt jeszcze tego nie opublikował, biorąc pod uwagę, że nie będziesz musiał sprawdzać, do czego chcesz wrócić lub bawić się gałęziami.
* oznacza to reset do bieżącej gałęzi na @{upstream}
- zwykle origin/<branchname>
, ale nie zawsze
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-06-26 16:49:23
Dla lokalnych commitów, które nie są wypychane, możesz również użyć git rebase -i
, aby usunąć lub usunąć commit.
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-10-17 21:43:36
Miałem sytuację, w której chciałem usunąć commit, który nie został wypchnięty, ale commit był przed kolejnym. W tym celu użyłem następującego polecenia
git rebase -i HEAD~2
-> będzie to rebase last 2 commit
I użyłem 'drop' dla podpisu commit, który chciałem usunąć.
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
2017-09-26 09:57:24