Magit - Cofnij ostatnie zatwierdzenie - Manipulacja historią

12

To pytanie StackOverflow ma najlepsze rozwiązania / podejścia do cofnięcia ostatnich zatwierdzeń.

Zacząłem używać Magit kilka tygodni temu i po przejrzeniu całej jego dokumentacji wciąż nie mam ostatecznego / najlepszego sposobu na cofnięcie błędnie popełnionej zmiany.

Na przykład:
Do cofania i ponawiania ostatniego zatwierdzenia, którego możemy użyć:

$ git commit -m "Something terribly misguided"
$ git reset HEAD~
<< edit files as necessary >>
$ git add ... 
$ git commit -c ORIG_HEAD # To keep the same commit message

Jaki powinien być najlepszy przepływ pracy, aby odtworzyć tę procedurę za pomocą Magit ?

Alexandro de Oliveira
źródło

Odpowiedzi:

17

Możesz użyć magit-reset(domyślnie ograniczone do x). Zatwierdzenie w punkcie zostanie użyte jako domyślne dla monitu, ale możesz wprowadzić dowolną wartość rewizji, którą chcesz („HEAD ~” tutaj).

Polecenia resetowania opisano w sekcji „Resetowanie” instrukcji: https://magit.vc/manual/magit/Resetting.html

Aby ponownie użyć komunikatu zatwierdzenia, możesz użyć =Copcji w wyskakującym okienku zatwierdzenia. Niepotrzebnie monit nie oferuje obecnie żadnych wartości ukończenia (myślę, że powinien przynajmniej oferować ORIG_HEAD), ale przed zresetowaniem możesz umieścić skrót bieżącego zatwierdzenia w pierścieniu zabijania (np. Za pomocą C-wwiersza „Head:” bufora statusu), a następnie, po zresetowaniu, szarp go jako wartość =Copcji.


Kilka dodatkowych komentarzy:

  • Zamiast używać =C, bardziej wygodne może być uruchomienie commit ( cc), a następnie użycie git-commit-prev-message ( M-p), aby przechodzić między poprzednimi wiadomościami.

  • Jeśli modyfikujesz tylko ostatnie zatwierdzenie, możesz zastosować zmiany etapowe do poprzedniego zatwierdzenia za pomocą magit-commit-amend ( ca) lub magit-commit-extend( ce). (Ten ostatni ponownie wykorzystuje komunikat zatwierdzenia, omijając bufor COMMIT_EDITMSG.)

Kyle Meyer
źródło