Jak mogę usunąć commit na Githubie? [duplikat]
"przypadkowo" wcisnąłem commit do Githuba.
Czy można usunąć ten commit?
Chcę przywrócić moje repozytorium GitHub tak, jak było przed zatwierdzeniem tego commita.
21 answers
Uwaga: Zobacz alternatywę dla
git rebase -i
w komentarzach poniżej -
git reset --soft HEAD^
Najpierw usuń commit z lokalnego repozytorium. Możesz to zrobić używając git rebase -i
. Na przykład, jeśli jest to twój ostatni commit, możesz wykonać git rebase -i HEAD~2
i usunąć drugą linię w oknie edytora, które się pojawi.
Następnie Wymuś push do GitHub używając git push origin +branchName --force
Zobacz Git Magic Rozdział 5: lekcje historii - a potem jakieś Po Więcej informacji (np. jeśli chcesz usunąć starsze commity).
Jeśli Twoje pracujące drzewo jest brudne, musisz najpierw zrobićgit stash
, a potem git stash apply
.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
2020-12-29 21:49:12
git push -f origin HEAD^:master
To powinno "cofnąć" pchnięcie.
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-01-16 00:11:01
Dla łatwego powrotu, jeśli to tylko błąd (być może rozwidliłeś repo, a następnie popchnąłeś do oryginału zamiast do nowego) oto inna możliwość:
git reset --hard 71c27777543ccfcb0376dcdd8f6777df055ef479
Oczywiście Zamień ten numer na numer commita, do którego chcesz powrócić.
Wszystko od tego czasu zostanie usunięte po ponownym naciśnięciu. Aby to zrobić, następnym krokiem będzie:
git push --force
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-10-18 00:30:56
-
git log
aby dowiedzieć się, jaki commit chcesz przywrócić git push origin +7f6d03:master
podczas gdy 7f6d03 jest commitem przed błędnie pchniętym commitem.+
było dlaforce push
Tutaj jest bardzo dobry przewodnik, który rozwiązuje twój problem, łatwe i proste!
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-03-17 14:20:11
Jeśli chcesz zachować zmiany w commicie po usunięciu:
zauważ, że to rozwiązanie działa, jeśli commit do usunięcia jest ostatnim zatwierdzonym.
1-skopiuj odniesienie do zatwierdzenia, do którego chcesz wrócić z dziennika:
git log
2-Zresetuj git do odwołania do zatwierdzenia:
git reset <commit_ref>
3-przechowuj / przechowuj lokalne zmiany z błędnego commita, aby użyć później po naciśnięciu na remote:
git stash
4-przesuń zmiany do zdalne repozytorium, (- f lub --force):
git push -f
5-zwróć zapisane zmiany do lokalnego repozytorium:
git stash apply
7 - W przypadku, gdy nie śledzisz / nowe pliki w zmianach, musisz dodać je do git przed zatwierdzeniem:
git add .
6-Dodaj dodatkowe zmiany, których potrzebujesz, a następnie zatwierdź potrzebne pliki (lub użyj kropki '.'zamiast podawać nazwę KAŻDEGO pliku, aby zatwierdzić wszystkie pliki w lokalnym repozytorium:
git commit -m "<new_commit_message>" <file1> <file2> ...
Lub
git commit -m "<new_commit_message>" .
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-12-14 14:53:37
Musisz wyczyścić pamięć podręczną, aby została całkowicie wyczyszczona. ta strona pomocy od git ci pomoże. (pomogło mi) http://help.github.com/remove-sensitive-data/
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-07-27 22:38:42
Usuń najnowszy commit, zachowując wykonaną pracę:
git reset --soft HEAD~1
Usuń najnowszy commit, niszcząc pracę, którą wykonałeś:
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
2017-11-15 12:39:15
Użyj git revert
do odwrócenia pchnięcia.
Git-revert-przywraca istniejące commity
git revert [--edit | --no-edit] [-n] [-m parent-number] [-s] <commit>... git revert --continue git revert --quit git revert --abort
Przywróci zmiany wprowadzone przez powiązane łaty i zarejestruje kilka nowych commitów, które je rejestrują. Wymaga to, aby Twoje działające drzewo było czyste(bez modyfikacji z commita HEAD).
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-02-26 17:33:50
1. git reset HEAD^ --hard
2. git push origin -f
To mi pasuje.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-10 08:41:55
Aby usunąć commit ze zdalnego repozytorium:
git push -f origin last_known_good_commit:branch_name
Aby usunąć commit z lokalnego repozytorium:
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
2017-05-23 12:34:48
Musisz znać hash swojego commita z commita, do którego chcesz powrócić. Możesz go pobrać z adresu URL GitHub, takiego jak: https://github.com/your-organization/your-project/commits/master
Załóżmy, że hash z commita (do którego chcesz wrócić) to " 99fb454 "(długa wersja "99fb45413eb9ca4b3063e07b40402b136a8cf264"), to wszystko co musisz zrobić to:
git reset --hard 99fb45413eb9ca4b3063e07b40402b136a8cf264
git push --force
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-12-20 14:21:29
Znajdź Spec ref commita, którego chcesz być szefem swojej gałęzi na Githubie i użyj następującego polecenia:
git push origin +[ref]:[branchName]
W Twoim przypadku, jeśli chcesz wrócić do jednego commita, znajdź początek ref dla tego commita, powiedzmy na przykład, że jest to 7f6d03, i nazwę gałęzi, którą chcesz zmienić, powiedzmy na przykład, że jest to master i wykonaj następujące czynności:
git push origin +7f6d03:master
Znak plus jest interpretowany jako --force
, co będzie konieczne, ponieważ przepisujesz historia.
Zauważ, że za każdym razem, gdy tworzysz commit, możesz potencjalnie przepisać historię innych ludzi, którzy połączą Twoją gałąź. Jeśli jednak szybko złapiesz problem (zanim ktoś inny połączy Twoją gałąź), nie będziesz miał żadnych problemów.
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-06-22 10:36:58
Jeśli robisz to, ponieważ masz poufne dane w zatwierdzeniu, Używanie innych odpowiedzi tutaj nie jest bezpieczne (z wyjątkiem subutux, które rozwinię).
Przewodnik github na tym zaleca użycie zewnętrznego narzędzia, ale wolę używać wbudowanego.
Po pierwsze, Wykonaj kopię zapasową swojego repozytorium . Wtedy:
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA' \
--prune-empty --tag-name-filter cat -- --all
Następnie, Upewnij się, że repozytorium jest w żądanym stanie . Możesz chcieć odróżnić się od wsparcie.
Jeśli jesteś pewien, że jest poprawny, to:
#get rid of old unreferenced commits (including the data you want to remove)
git gc --prune=now
git push origin --force --all
Na wszelki wypadek możesz zachować lokalną kopię zapasową.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-01-02 14:01:18
Uruchom to polecenie na swoim terminalu.
git reset HEAD~n
Możesz usunąć ostatnie N commitów z lokalnego repo, np. HEAD~2. Wykonaj polecenie git push na swoim repozytorium.
git push -f origin <branch>
Mam nadzieję, że to pomoże!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-01-18 02:23:40
Aby zachować strukturę rozgałęzień i scalania, należy użyć opcji --preserve-merges
podczas rebase:
git rebase --preserve-merges -i HEAD^^
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-17 18:15:31
Dla GitHub
- zresetuj swoje commity (twarde) w lokalnym repozytorium
- Utwórz nową gałąź
- Push the new branch
- Usuń starą gałąź (Utwórz nową jako domyślną, jeśli usuwasz gałąź główną)
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
2019-07-04 11:35:37
Zapisz najpierw lokalne zmiany gdzieś z boku (kopia zapasowa)
Możesz przeglądać ostatnie zmiany, a następnie wybrać hash zmian, klikając na Przycisk "Kopiuj pełny SHA", aby wysłać go do schowka.
Jeśli twój ostatni hash commit jest, powiedzmy g0834hg304gh3084gh (na przykład )
Musisz uruchomić:
git push origin +g0834hg304gh3084gh:master
Używając wcześniej skopiowanego hasha, aby zmienić go na" HEAD".
Dodaj pożądane zmiany lokalne. Zrobione;)
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-13 12:22:30
Jeśli chcesz usunąć do interactive rebase,
git rebase -i HEAD~4
4 represents total number of commits to display count your commit and
zmień go odpowiednio
I usuń commit, który chcesz z listy...
Zapisz zmiany przez Ctrl + X (ubuntu) lub :WQ (centos)
Druga metoda, do revert,
git revert 29f4a2 #your commit ID
To przywróci określony 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
2017-11-15 09:56:10
W GitHub Desktop możesz po prostu kliknąć prawym przyciskiem myszy commit i przywrócić go, co spowoduje utworzenie nowego commita, który cofnie zmiany.
Przypadkowy commit nadal będzie w twojej historii (co może być problemem, jeśli na przykład przypadkowo użyłeś klucza lub hasła API), ale kod zostanie przywrócony.
Jest to najprostsza i najłatwiejsza opcja, przyjęta odpowiedź jest bardziej wyczerpująca.
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-19 11:05:32
Nie jest zbyt dobrze pisać historię na nowo. Jeśli użyjemy git revert <commit_id>
, utworzy on czysty Reverse-commit o podanym identyfikatorze.
W ten sposób historia nie jest przepisywana na nowo, zamiast tego każdy wie, że nastąpiło odwrócenie.
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-17 12:44:24
Dodaj/usuń pliki, aby uzyskać rzeczy tak, jak chcesz:
git rm classdir
git add sourcedir
Następnie zmień commit:
git commit --amend
Poprzedni, błędny commit zostanie edytowany, aby odzwierciedlić nowy stan indeksu - innymi słowy, będzie to tak, jakbyś nigdy nie popełnił błędu
Zauważ, że powinieneś to zrobić tylko wtedy, gdy jeszcze nie naciskałeś. Jeśli popchnąłeś, będziesz musiał normalnie wprowadzić poprawkę.
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-07 06:20:12