Czy istnieje sposób, aby przywrócić popełnić tak, że moja kopia lokalna utrzymuje zmiany dokonane w które popełniają, ale stają się one Niezaangażowane zmiany w mojej kopii roboczej? Wycofanie zatwierdzenia przenosi cię do poprzedniego zatwierdzenia - chcę zachować wprowadzone zmiany, ale zatwierdziłem je w niewłaściwej gałęzi.
Nie zostało to popchnięte, tylko popełnione.
git reset --soft
igit reset --mixed
oba robią to (nieco inaczej), patrz git-resetOdpowiedzi:
Można to zrobić na wiele sposobów, na przykład:
w przypadku, gdy jeszcze nie opublikowałeś zatwierdzenia publicznie:
To wszystko, zmiany zatwierdzenia będą w twoim katalogu roboczym, a LAST zatwierdzenia zostaną usunięte z twojego aktualnego oddziału. Zobacz git reset man
W przypadku, gdy nie pchnięcie publicznie (na oddział o nazwie „Master”):
cofnij zatwierdzenie normalnie i wciśnij
teraz, jeśli chcesz mieć te zmiany podczas lokalnych zmian w kopii roboczej („aby lokalna kopia zachowała zmiany dokonane w tym zatwierdzeniu”) - po prostu przywróć cofnij zatwierdzenie z
--no-commit
opcją:Stworzyłem mały przykład: https://github.com/Isantipov/git-revert/commits/master
źródło
reset
wspomniane polecenie mówi „miękko” zresetować do 1 obrotu przed głową, co zachowuje wszystkie lokalne zmiany. nie było to od razu widoczne dla mnie w SourceTree. po prostu upewnij się, że miękko resetujesz się do poprzedniej wersji, a nie do wersji, którą próbujesz zresetować"Already up to date"
podczas scalania.Jeśli wprowadziłeś zmiany, możesz to
undo
zrobić i przenieść pliki z powrotem na scenę bez korzystania z innej gałęzi.Stworzy plik łatki, który zawiera ostatnie zmiany w gałęzi. Następnie przywraca zmiany. Na koniec zastosuj pliki łatek do działającego drzewa.
źródło
rm patch
też chciećW przypadku: „Nie zostało to popchnięte, tylko popełnione ”. - jeśli używasz IntelliJ (lub innego JetBrains IDE) i nie wprowadziłeś jeszcze zmian, możesz to zrobić dalej.
Gotowy.
Spowoduje to „anulowanie” zmian i przywrócenie statusu git do punktu przed ostatnim zatwierdzeniem lokalnym. Nie stracisz żadnych dokonanych zmian.
źródło
git reset --soft "HEAD^"
Windows, btw. :)U mnie dzieje się to głównie wtedy, gdy pcham zmiany do niewłaściwej gałęzi i uzmysławiam sobie później. I śledzenie działa przez większość czasu.
źródło
git kasa nazwa_gałęzi
git merge --abort
status git
git reset --hard origin / nazwa_gałęzi
źródło
2020 prosty sposób:
Zatwierdź skrót ostatniego zatwierdzenia, które chcesz zachować.
źródło