Jak mogę cofnąć 'git commit' lokalnie i na pilocie po ' git push`

Wykonałem git commit a następnie git push. Jak mogę przywrócić tę zmianę zarówno w repozytoriach lokalnych, jak i zdalnych?

$ git log
commit 364705c23011b0fc6a7ca2d80c86cef4a7c4db7ac8
Author: Michael Silver <Michael [email protected]>
Date:   Tue Jun 11 12:24:23 2011 -0700
Author: jubobs, 2011-06-23

7 answers

git reset --hard HEAD~1
git push -f <remote> <branch>

(przykładowy push: git push -f origin bugfix/bug123)

Spowoduje to cofnięcie ostatniego commita i przesunięcie zaktualizowanej historii do pilota. Musisz przekazać -f, ponieważ zastępujesz historię upstream w zdalnym.

 331
Author: Alexander Groß,
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-13 08:59:58

Ogólnie tworzymy commit "odwrotny", używając:

git revert 364705c

Następnie wyślij go do pilota jak zwykle:

git push

To nie usunie commita: tworzy dodatkowy commit, który anuluje to, co zrobił pierwszy commit. Wszystko inne, niezbyt bezpieczne, zwłaszcza gdy zmiany zostały już propagowane.

 143
Author: Amadan,
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-06-23 18:50:55

Po pierwsze, odpręż się.

"Nic nie jest pod naszą kontrolą. Nasza kontrola to tylko iluzja.", "błądzić jest człowiekiem" Rozumiem, że nieumyślnie przesunąłeś swój kod na remote-master. Wszystko będzie dobrze.

1. na początku pobieramy wartość SHA-1 commit, który próbujesz zwrócić, np. commit do gałęzi master. uruchom to:

git log

Zobaczysz kilka ' f650a9e398ad9ca606b25513bd4af9fe...'jak ciągi wraz z każdym commitem. skopiuj ten numer z commita, który chcesz wrócić.

2. Teraz wpisz poniżej komendę:

git reset --hard your_that_copied_string_but_without_quote_mark

Powinieneś zobaczyć komunikat w stylu "HEAD is now at". jesteś czysty. To, co właśnie zrobił, to odzwierciedlenie tej zmiany na poziomie lokalnym.

3. Teraz wpisz poniżej komendę:

git push -f

Powinieneś zobaczyć jak

"Uwaga: przyj.wartość domyślna jest wyłączona; jej domyślna wartość została zmieniona do środka..... ... Suma 0 (delta 0), ponownie użyta 0 delta 0) ... ...your_branch_name - > master (wymuszona aktualizacja)."

/ Align = "left" / Sprawdź master z "git log" ponownie, twój fixed_destination_commit powinien być na górze listy.

Zapraszam (z góry;))

Aktualizacja:

Zmiany, których dokonałeś, zanim się to wszystko zaczęło, teraz zniknęły. Jeśli chcesz przywrócić te ciężkie prace, to możliwe. Dzięki git reflog i git cherry-pick polecenia.

W tym celu proponowałbym śledzić ten blog lub ten post .

 29
Author: kmonsoor,
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-14 10:35:51

git reset HEAD~1 jeśli nie chcesz, aby twoje zmiany zniknęły(zmiany bez zmian). Zmień, Zatwierdź i wciśnij ponownie git push -f [origin] [branch]

 6
Author: softvar,
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-06-25 13:42:43

Możesz zrobić interaktywną rebase:

git rebase -i <commit>

Spowoduje wyświetlenie domyślnego edytora. Po prostu Usuń wiersz zawierający commit, który chcesz usunąć, aby usunąć ten commit.

Będziesz oczywiście potrzebował dostępu do zdalnego repozytorium, aby zastosować tę zmianę również tam.

Zobacz to pytanie: Git: usuwanie wybranych commitów z repozytorium

 3
Author: Jack Edmonds,
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:18:27

Alternatywnie:

git push origin +364705c23011b0fc6a7ca2d80c86cef4a7c4db7ac8^:master

Wymuś gałąź główną zdalnego repozytorium origin do rodzica ostatniego commita

 2
Author: MicRum,
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-22 22:41:26

Spróbuj użyć

git reset --hard <commit id> 

Uwaga: tutaj identyfikator zatwierdzenia będzie identyfikatorem zatwierdzenia, do którego chcesz przejść, ale nie identyfikatorem, który chcesz zresetować. to był jedyny punkt, w którym też zostałem ukłuty.

Następnie naciśnij

git push -f <remote> <branch>
 2
Author: Mohit Dhawan,
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-02-01 10:07:15