So machen Sie eine Git-Zusammenführung rückgängig

Versehentlich etwas Falsches zu tun kommt bei der Arbeit mit Git sehr häufig vor, aber zum Glück Es wurde entwickelt, um den Versionsverlauf Ihres Repositorys zu verfolgen. Es gibt immer eine Möglichkeit, vorgenommene Änderungen rückgängig zu machen, und wenn Sie eine Git-Zusammenführung rückgängig machen möchten, ist das ziemlich einfach.

Eine Git-Zusammenführung rückgängig machen

Grundsätzlich gibt es zwei Möglichkeiten, dies zu erreichen, und es hängt alles davon ab, ob Sie die Änderungen bereits an Ihre Quellcodeverwaltung übertragen haben oder nicht. Wenn Sie sich bereits an einen Dienst wie GitHub gebunden und diesen per Push übertragen haben, gilt dieser im Allgemeinen als unveränderlich, es sei denn, Sie möchten den Push erzwingen, was gefährlich ist. Sie möchten niemals Dateien „löschen“. Commits und Git-Merges werden als „Merge-Commits“ hinzugefügt. Sie sollten „git revert“ verwenden, um die Änderungen sicher rückgängig zu machen, und das Rückgängigmachen als neues Commit festschreiben.

Wenn Sie jedoch gerade lokal etwas vermasselt haben, über Ihre Tastatur geflucht haben und nach einer Lösung gegoogelt haben, können Sie den Merge-Commit immer noch bedenkenlos löschen und Ihren Git-Verlauf mit einem einfachen Git-Reset sauber halten.

Lokal zurücksetzen

Es ist am einfachsten und sichersten, Git-Resets mit einem GUI-Git-Client durchzuführen, bei dem Sie den Zweig leicht sehen können Geschichte. Es ist natürlich nicht notwendig, aber die visuelle Darstellung hilft, wenn Sie komplexe Zweige haben.

In diesem Beispiel wollen wir die Zusammenführung des Feature-Zweigs mit dem Hauptzweig rückgängig machen. Da der Feature-Zweig eigentlich nicht berührt wurde, möchten wir den „Hauptzweig“ zurücksetzen. Branch-Label, um auf den letzten Commit zu verweisen.

Dazu möchten wir den Hauptzweig auschecken und dann auf den vorherigen Commit zurücksetzen. Die Abkürzung dafür ist HEAD^, und wir können einen Hard-Reset auf den letzten Commit durchführen. Wenn Sie sich mit einem „destruktiven“ Verhalten nicht wohl fühlen; Zurücksetzen können Sie einen Soft-Reset durchführen und dann die Merge-Commit-Änderungen manuell verwerfen.

git reset –hard HEAD^

Wie Sie sehen können, wird dadurch der Merge-Commit vollständig entfernt und der Feature-Zweig bleibt unberührt.

VERWANDTEWie funktioniert Git Reset tatsächlich? Soft-, Hard- und Mixed-Resets erklärt

Wenn der Commit, auf den Sie zurücksetzen müssen, nicht der letzte vor dem aktuellen HEAD des Zweigs ist, können Sie einfach die SHA1-ID dafür kopieren und auf diesen bestimmten Commit zurücksetzen.

Einen bereits gepushten Commit rückgängig machen

Wenn Sie bereits gepusht haben, gibt es leider keine Möglichkeit, den Merge-Commit zu entfernen, ohne Ihren Repository-Verlauf zu überschreiben. Sie können die oben gezeigten Schritte ausführen und mit dem Flag –force in das Upstream-Repository (z. B. GitHub) pushen. Dies wird jedoch im Allgemeinen als destruktiv angesehen und ist unsicher, wenn Sie mehrere Mitarbeiter haben, da alle ihre lokalen Repos aktualisieren müssen.

Die andere Möglichkeit, Commits in Git rückgängig zu machen, besteht darin, sie rückgängig zu machen. Durch das Zurücksetzen eines Commits werden die gegenteiligen Änderungen auf das Repository angewendet: Für jede hinzugefügte Zeile wird diese Zeile entfernt. Alles, was gelöscht wurde, wird wieder hinzugefügt und so weiter. Dadurch wird der Commit praktisch rückgängig gemacht. Der Nachteil besteht darin, dass dieser Vorgang Ihren Versionsverlauf etwas unübersichtlich macht. Im Allgemeinen ist dies jedoch eine gute Vorgehensweise, um Fehler rückgängig zu machen.

Das Zurücksetzen eines Commits ist ziemlich einfach. Zuerst müssen Sie git log ausführen, um eine Liste der Commits und ihrer ID-Nummern zu erhalten.

Dann können Sie den SHA1-Hash kopieren und das Commit mit git revert zurücksetzen:

git revert 62ff517cc7c358eaf0bffdebbbe1b38dea92ba0f

Sie müssen dieses neue “ Commit zurücksetzen” an GitHub, um das Problem zu beheben.

WEITER LESEN

  • › Wie hoch ist die Zeichenbeschränkung für ChatGPT?
  • › Sie können Game Pass Ultimate (wieder einmal) für 1 $ erhalten
  • › Holen Sie sich das M1 MacBook Air für nur 750 $, den bisher niedrigsten Preis
  • › GIMP 2.99.16 verfügt über neue Schnittstellenoptionen und mehr Dateiformate
  • › Sparen Sie bis zu 1.199 $ bei tragbaren BLUETTI-Kraftwerken am Prime Day
  • › ChatGPT vs. GPT 3: Was ist der Unterschied?

Posted

in

by

Tags: