Löschen Sie einen Git-Commit, der auf einen Remote-Branch gepusht wurde

Lesezeit: 2 Minuten

Benutzer-Avatar
Adrian BARRAL

Wir verwenden Git und GitFlow als Versionierungswerkzeuge, und ich stehe vor einem Problem, von dem ich ziemlich sicher bin, dass einige Leute bereits darauf gestoßen sind.

In einem Feature-Branch hat ein Kollege einen Commit gemacht, bei dem viele nutzlose Dateien eingefügt wurden (alle Binär- und IDE-Metadatendateien). Dieses Commit wurde gepusht. Jetzt sendet dieser Kollege einen Pull-Request, in den ich nicht all diese nutzlosen Dateien integrieren möchte develop.

Jetzt ist mein Git-Repository ziemlich groß und ein Git-Klon wird zu einem langen und langweiligen Prozess …

Die erste (und einfache) Lösung besteht darin, diese Dateien aus dem Feature-Branch zu entfernen und ohne diese Dateien zu committen (oder eine revert commit). Aber wenn ich das tue, bleibt mein Git-Repository ziemlich groß, weil Objekte (Dateien) nicht aus der Historie entfernt werden (weil Git sie immer noch kennt!).

Was ich möchte, ist, diesen Commit zu “stornieren”.

Das folgende Bild zeigt mein Problem (das oberste Commit ist das älteste):

Diagramm des Git-Repositorys

Wie kann ich diesen Commit entfernen und meinen Git-Klon wieder schnell machen?

PS: Danke an GitGraphJS für ihre nützlichen Tools zum Zeichnen von Git-Graphen!

  • Warum nicht einfach den Zweig entfernen, da er nicht zusammengeführt wird?

    – lxyyz

    8. Juni 2017 um 16:36 Uhr

  • Führen Sie einen interaktiven Rebase des Zweigs durch, reparieren Sie das betreffende Commit und senden Sie dann die Pull-Anfrage erneut.

    – Lasse V. Karlsen

    8. Juni 2017 um 16:47 Uhr


  • Kannst du den Commit rückgängig machen?

    – baumelnder Zeiger

    8. Juni 2017 um 16:47 Uhr

Es gibt mehrere Methoden, um den Commit zu löschen oder rückgängig zu machen. In diesem Fall können Sie verwenden git revert oder git rebase oder git reset.

Eine Information, git rebase Fügen Sie im Vergleich zur Verwendung von git revert keinen zusätzlichen Commit hinzu. git revert fügt während der Zusammenführung einen zusätzlichen Commit hinzu. Wenn Sie mit der Verwendung von git rebase nicht vertraut sind, schlage ich vor, dass Sie es verwenden git revert dann.

Zurückkehren

git revert <commit-ID>

Danach übernehmen Sie die Änderungen und schieben dieses Commit an Ihren Ursprung.


Zurücksetzen

Sie können den zuletzt gepushten Commit löschen, danach müssen Sie Ihren Zweig pushen. Sie können den Feature-Branch entweder zusammenführen oder auf den Entwicklungs-Branch umbasen.

git reset –-hard HEAD~1

oder

git reset HEAD^ --hard

Rebase

Dieser Befehl führt zum interaktiven Abschnitt des Editors, von dort aus können Sie auswählen

 git rebase -i HEAD~

Im interaktiven Bereich werden alle Commits aufgelistet. Löschen Sie diejenige, die Sie loswerden möchten. Beenden Sie die Rebase und schieben Sie die Kraft auf das Repo.

git rebase --continue dann schieben Sie Ihren Zweig.

1047560cookie-checkLöschen Sie einen Git-Commit, der auf einen Remote-Branch gepusht wurde

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy