Merge-Commit in Git rückgängig machen
- Git-Commit zurücksetzen, das nicht gepusht wurde
- Git-Commit rückgängig machen, das bereits gepusht wurde
Manchmal müssen wir zwei oder mehr Zweige zusammenführen und dann den Commit zum gewünschten Zweig verschieben. Aber dann stellen wir fest, dass wir diesen Merge in diesem Repository nicht brauchen, also stellt sich hier die Frage, wie man einen bereits gepushten Merge-Commit rückgängig macht oder rückgängig macht. Nichts, über das man sich sorgen sollte. Git hat eine hervorragende Lösung für dieses Problem, die unten besprochen wird.
Je nach Problem gibt es zwei Möglichkeiten, mit dieser Situation umzugehen. Einer ist, dass es noch nicht in das Repository gepusht, aber festgeschrieben wurde. Ein weiterer Grund ist, dass es sowohl festgeschrieben als auch in das Repository geschoben wird. Beide Situationen wurden unten besprochen:
Git-Commit zurücksetzen, das nicht gepusht wurde
Es ist unmöglich, einen Commit in Git direkt rückgängig zu machen. Trotzdem müssen wir den Commit überprüfen, bevor wir ihn zurücksetzen. Nach dem Zurücksetzen ist die Position des Arbeitsverzeichnisses jetzt dieselbe wie die Position des Arbeitsverzeichnisses, bevor wir den Commit verschoben haben.
Wir können jetzt den Befehl git reset
anwenden, um den Indexzeiger wieder an seinen Platz zu verschieben, d.h. die Position vor dem Commit. Wenn wir beispielsweise die Änderungen der Commits Commit1
und Commite3
beibehalten, aber die Änderungen des Commits Commit2
rückgängig machen wollen, führen Sie diesen Befehl aus.
git reset HEAD~3
Dieser Befehl setzt den Indexzeiger auf die Position vor dem Commit Commit2
zurück. Nach dem Zurücksetzen des Commit müssen wir die geänderten Dateien erneut zum Arbeitsverzeichnis hinzufügen. Führen Sie beispielsweise die folgenden Befehle aus:
git checkout Commit1
git add Commit1
git checkout Commit3
git add Commit3
git commit
Danach können wir die Commits Commit1
und Commit3
in das Remote-Repository pushen.
git push
Wenn wir zwei Zweige zusammenführen und dann die Änderungen eines Zweigs rückgängig machen möchten, können wir den folgenden Befehl verwenden:
git merge --abort
Dieser Befehl wird verwendet, um den Zusammenführungsprozess abzubrechen. Danach können wir die Änderungen auf den Zweig zurücksetzen. Die in diesem Abschnitt besprochenen Befehle sind nützlich, wenn wir die Wirkung des letzten Commits oder mehrerer Commits rückgängig machen möchten.
Wenn wir jedoch die Wirkung der letzten zwei oder mehr Commits rückgängig machen wollen, müssen wir das Arbeitsverzeichnis auf den Zustand vor dem letzten Commit zurücksetzen. Dies liegt daran, dass es unmöglich ist, einen oder mehrere Commits direkt rückgängig zu machen.
Git-Commit rückgängig machen, das bereits gepusht wurde
Im anderen Fall, wenn wir den Merge-Commit bereits in den Remote-Zweig gepusht und auch gepusht haben, müssen wir einen neuen Commit machen, der die Änderungen rückgängig macht. Wir werden den folgenden Befehl ausführen:
git revert -m 1 <merge-commit-hash>
Dadurch wird ein neues Commit entwickelt, das die Änderungen des vorherigen Merge-Commits rückgängig macht. Dieser neue Commit enthält jedoch auch alle Änderungen gegenüber dem ursprünglichen Merge-Commit, sodass wir die Commit-Nachricht bearbeiten müssen, um anzuzeigen, dass es sich um einen Revert-Commit handelt. Wohingegen die erwähnte Option -m 1
Git mitteilt, dass wir den gemergten Branch behalten wollen.
Der Befehl revert
ändert den Arbeitsbaum nicht. Es ändert nur den Index. Der revert-Befehl
hat auch eine Option, um die ursprüngliche Nachricht des Commits wiederherzustellen. Im obigen Beispiel wird die Option -m
verwendet, um die ursprüngliche Nachricht des Commit wiederherzustellen. Der Befehl revert kann auch verwendet werden, um eine bestimmte Datei aus dem integrierten Commit wiederherzustellen.
Git Revert ist ein nützliches Tool für unsere lokalen Niederlassungen, wenn wir eine Änderung vornehmen und entscheiden, dass wir diese Änderung nicht länger beibehalten möchten. Es wird nicht empfohlen, es in öffentlichen Zweigen zu verwenden.
Wie wir wissen, ist git revert rein umkehrbar, es ist unmöglich, seine Änderungen rückgängig zu machen. Wenn wir git revert auf einem Commit ausführen, das nicht das aktuelle Commit in seinem Zweig ist, müssen wir sehr vorsichtig sein, da git revert neue Commits entwickelt, die neue Commit-IDs haben.
Wenn wir später git reset –hard ausführen, um die Änderungen rückgängig zu machen, die git revert vornimmt, werden wir auch die Änderungen entfernen, die von dem Entwickler vorgenommen wurden, der den Commit erstellt hat, den git revert rückgängig gemacht hat. Es ist möglich, git revert in einem öffentlichen Zweig zu verwenden, aber meiner Meinung nach ist dies keine gute Idee. Es ist besser, einen neuen Zweig zu entwickeln, um eine Änderung vorzunehmen, und ihn dann mit dem master
-Zweig zusammenzuführen, wenn wir fertig sind.
Wenn wir git revert in einem öffentlichen Zweig verwenden möchten, stellen Sie sicher, dass wir der einzige sind, der an diesem Zweig arbeitet, oder wir werden die Arbeit anderer rückgängig machen.
Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.
LinkedInVerwandter Artikel - Git Revert
- Git Revert Commit Local
- Setzen Sie ein Git-Repository auf einen vorherigen Commit zurück
- Unterschied zwischen den Git-Befehlen `Reset`, `Revert` und `Checkout`.
- Wiederherstellen eines rückgängig gemachten Git-Commits
- Löschen lokale Commits in Git