4212 Stimmen

Löschen von Übertragungen aus einem Zweig in Git

Ich würde gerne wissen, wie ich eine Übertragung löschen kann.

Unter delete Ich meine, dass es so ist, als ob ich diesen Commit nicht gemacht hätte, und wenn ich in Zukunft einen Push mache, werden meine Änderungen nicht in den entfernten Zweig gepusht.

Ich habe die Git-Hilfe gelesen und denke, dass ich den folgenden Befehl verwenden sollte git reset --hard HEAD . Ist dies korrekt?

64 Stimmen

Ich denke, das ist no ein Duplikat von Git letzte Übergabe rückgängig machen da er fragt, wie er löschen soll cualquier von einem Zweig übertragen. Ich denke auch, dass keine der Antworten auf diese Frage eingeht. Sie alle spulen die letzten Commits zurück, nicht cherry-pick y delete eine einzelne Übergabe, die vielleicht schon eine Weile zurückliegt.

22 Stimmen

@Chris, die Antwort mit git rebase -i HEAD~10 geht auf diese Frage ein, da es Ihnen erlaubt, die zu löschenden Commits willkürlich auszuwählen. Git wendet die Commits in dem von Ihnen angegebenen Bereich einzeln an und ignoriert dabei Commits, die Sie aus dem Protokoll entfernt haben. Ich habe diesen Befehl heute verwendet, um die zweit- und drittjüngsten Commits in meinem Repo zu löschen, während ich den obersten beibehalten habe. Ich stimme zu, dass keine der anderen Antworten zufriedenstellend ist.

0 Stimmen

@MST ja, ich hätte sagen sollen, dass keine der Optionen in der akzeptierten Antwort auf diese Frage eingeht, aber Sie haben absolut Recht - dieser Befehl scheint zu funktionieren

57voto

sun34 Punkte 553
git reset --hard commitId

git push <origin> <branch> --force

PS: CommitId bezieht sich auf diejenige, zu der Sie zurückkehren möchten

0 Stimmen

Git push --force <Ursprung> <Zweigname>. da ohne Angabe des Zweignamens möglicherweise alle Dateien auf dem Remote geändert werden.

38voto

Anurag-Sharma Punkte 4497

Wenn Sie Ihren letzten Commit korrigieren wollen, können Sie den Commit rückgängig machen und die darin enthaltenen Dateien wiederherstellen, indem Sie dies tun:

git reset HEAD~1

Dadurch wird Ihr Repository in den Zustand vor den git-add-Befehlen zurückversetzt, mit denen die Dateien bereitgestellt wurden. Ihre Änderungen befinden sich dann in Ihrem Arbeitsverzeichnis. HEAD~1 bezieht sich auf den Commit unterhalb der aktuellen Spitze des Zweigs.

Wenn Sie N Commits aufheben wollen, aber die Codeänderungen in Ihrem Arbeitsverzeichnis behalten wollen:

git reset HEAD~N

Wenn Sie Ihre letzte Übertragung loswerden und die Codeänderungen nicht behalten wollen, können Sie einen "harten" Reset durchführen.

git reset --hard HEAD~1

Gleiches gilt, wenn Sie die letzten N Commits verwerfen und die Codeänderungen nicht behalten wollen:

git reset --hard HEAD~N

0 Stimmen

Ich habe das ausprobiert und mein letzter Commit wurde entfernt, aber wenn ich jetzt an das entfernte Repository pushe, heißt es, dass ich erst pullen muss, bevor ich pushen kann. Also habe ich gepullt und dann gepusht, aber als ich gepullt habe, habe ich wieder den Commit bekommen, den ich gerade entfernt habe, weil ich ihn vorher an das Remote-Repository gepusht habe. Was soll ich jetzt tun?

22voto

thestar Punkte 4565

Um im lokalen Zweig zu löschen, verwenden Sie

git reset --hard HEAD~1

Um in einem entfernten Zweig zu löschen, verwenden Sie

git push origin HEAD --force

17voto

Saurav Sahu Punkte 11267

Wenn Sie ein IntelliJ Benutzer, die Schnittstelle ist einfach genial. Mit einer einfacher Klick können Sie die Wirkung sofort sehen. Eine Abkürzung zu dieser Stelle: Cmd + 9 auf MacOS.

enter image description here

0 Stimmen

Diese Frage bezieht sich nicht auf intelliJ, sondern auf Git selbst.

17voto

Sagar Jethi Punkte 1715

Quelle: https://gist.github.com/sagarjethi/c07723b2f4fa74ad8bdf229166cf79d8

Die letzte Übertragung löschen

Zum Beispiel Ihre letzte Übertragung

git push origin +aa61ab32^:master

Wenn Sie diese Übergabe nun löschen möchten, können Sie dies auf einfache Weise wie folgt tun

Schritte

  1. Setzen Sie zunächst den Zweig auf den übergeordneten Zweig der aktuellen Übertragung zurück

  2. Drücken Sie sie mit Gewalt auf die Fernbedienung.

git reset HEAD^ --hard

git push origin -f

Für eine bestimmte Übertragung möchten Sie Folgendes zurücksetzen

git reset bb676878^ --hard

git push origin -f

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X