Magit - Letztes Commit rückgängig machen - Verlaufsmanipulation

12

Diese StackOverflow-Frage bietet die besten Lösungen / Ansätze, um letzte Commits rückgängig zu machen.

Ich habe vor ein paar Wochen angefangen, Magit zu verwenden, und nachdem ich die gesamte Dokumentation durchgesehen habe, habe ich immer noch keine endgültige / beste Möglichkeit, eine irrtümlich festgelegte Änderung rückgängig zu machen.

Zum Beispiel:
Zum Rückgängigmachen und Wiederherstellen des letzten Commits können wir Folgendes verwenden:

$ 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

Was sollte der beste Workflow sein, um dieses Verfahren mit Magit zu reproduzieren ?

Alexandro de Oliveira
quelle

Antworten:

17

Sie können verwenden magit-reset(standardmäßig gebunden an x). Das Festschreiben am Punkt wird als Standard für die Eingabeaufforderung verwendet, Sie können jedoch einen beliebigen Revisionswert eingeben ("HEAD ~" hier).

Die Rücksetzbefehle werden im Abschnitt "Zurücksetzen" des Handbuchs beschrieben: https://magit.vc/manual/magit/Resetting.html

Um die Festschreibungsnachricht wiederzuverwenden, können Sie die =COption im Festschreibungs-Popup verwenden. Leider bietet die Eingabeaufforderung derzeit keine Abschlusswerte an (ich denke, sie sollte wahrscheinlich zumindest bieten ORIG_HEAD), aber vor dem Zurücksetzen können Sie den Hash des aktuellen Commits in den Kill-Ring einfügen (z. B. mit C-win der Zeile "Head:") des Statuspuffers) und ziehen Sie ihn nach dem Zurücksetzen als Wert für die =COption.


Einige zusätzliche Kommentare:

  • Anstatt zu verwenden =C, ist es möglicherweise praktischer, das Commit ( cc) zu starten und dann mit git-commit-prev-message ( M-p) durch vorherige Nachrichten zu blättern .

  • Wenn Sie nur das letzte Commit ändern, können Sie mit magit-commit-amend ( ca) oder magit-commit-extend( ce) schrittweise Änderungen am vorherigen Commit vornehmen . (Letzterer verwendet die Festschreibungsnachricht unter Umgehung des Puffers COMMIT_EDITMSG erneut.)

Kyle Meyer
quelle