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

7voto

Chris Sim Punkte 3772

Was ich in der Regel tun, wenn ich zu begehen und zu schieben (wenn jemand schob seine commit dies das Problem lösen):

git reset --hard HEAD~1

git push -f origin

Ich hoffe, das hilft

7voto

git reset --hard HEAD~1
Sie befinden sich nun an der Spitze. Ziehen Sie den Zweig zurück. Pushen Sie neuen Code. Der Commit wird aus Git entfernt.

0 Stimmen

Es sei denn, Sie haben die Änderungen bereits durchgeführt. In diesem Fall wird ein Hard-Reset Ihre Remote nicht bereinigen. In diesem Fall ist rebase die beste Option.

7voto

Justin Punkte 38466

Wenn Sie bereits gepusht haben, suchen Sie zunächst den Commit, bei dem Sie sein wollen HEAD ($GIT_COMMIT_HASH_HERE) und führen Sie dann Folgendes aus:

git reset --hard $GIT_COMMIT_HASH_HERE
git push origin HEAD --force

Führen Sie dann an jedem Ort, an dem das Repository geklont wurde, den Befehl aus:

git reset --hard origin/master

7voto

Pwnrar Punkte 1117

Wenn Sie gerade Ihren letzten Commit verpfuscht haben (falsche Nachricht, vergessen, einige Änderungen hinzuzufügen) und ihn korrigieren wollen, bevor Sie ihn in ein öffentliches Repo verschieben, warum nicht verwenden:

git commit --amend -m "New message here"

Wenn Sie neue Änderungen vorgenommen haben, werden diese mit dem letzten Commit (den Sie loswerden wollen) kombiniert und ersetzen diesen Commit.

Wenn Sie einen Commit ändern, nachdem Sie ihn gepusht haben, schreiben Sie natürlich die Geschichte um, also sollten Sie sich über die Auswirkungen im Klaren sein.

Sie können auch die Option '--no-edit' anstelle von '-m' übergeben, wenn Sie lieber die Nachricht des vorherigen Commits verwenden möchten.

Dokumente: http://git-scm.com/docs/git-commit.html

3 Stimmen

Das ist nicht das, wonach OP fragt.

6voto

Ashish Singh Punkte 332

Zurücksetzen in der lokalen Niederlassung

git reset --hard HEAD~<Number of commit> So git reset --hard HEAD~3

Push zum Ursprung erzwingen

git push -f origin

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