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

1voto

Für mich neu gründen hat den Zweck erfüllt

$ git rebase -i HEAD~98

# Delete everything except for the most recent commit on the shown editor caused by "rebase"

$ git push origin -f production-static

HINWEIS: Nachdem ich den Anstoß gegeben hatte, meine Kommentare zu reduzieren. Ich habe dann einen anderen Satz von Dateien gepusht und dann versucht, mit dem gleichen "Repository & Branch" auf einem anderen Computer zu ziehen. Überraschenderweise gibt es keinen Konflikt. Dies wurde mein Weg, um die Größe des Repositorys zu reduzieren und gleichzeitig Pull-Konflikte auf meinem anderen lokalen Rechner zu vermeiden, der das gleiche Git verwendet

1voto

BillChan Punkte 85

Git reset --hard

git push origin HEAD --force

Wenn einer oder mehrere der Commits mit einem Tag versehen sind, löschen Sie zuerst das/die Tag(s). Andernfalls wird die markierte Übertragung nicht entfernt.

0voto

Mauro Bilotti Punkte 4624

In meinem Fall ist mein magischer Code für diesen Zweck dieser:

git reset --hard @{u}

Testen Sie es und sagen Sie es mir. Ich habe ein paar verschiedene ausprobiert, aber das war das einzige, das mir geholfen hat.

0voto

Uttam Rahane Punkte 62

Git Revert verwenden https://git-scm.com/docs/git-revert Es wird den gesamten Code rückgängig machen, dann können Sie den nächsten Commit machen, der dann auf den letzten Commit verweist. rückgängig gemachte Commits werden nie gelöscht, aber es hat keinen Einfluss auf den letzten Commit.

0voto

zacharydl Punkte 4188

Angenommen, Sie haben nicht in das entfernte Repository gepusht, können Sie das Repository neu klonen. Diese Methode habe ich schon ein paar Mal angewandt.

1 Stimmen

@LucasHuang Nein, ist es nicht: "Wenn ich einen Push im Zukunft meine Änderungen werden nicht in den entfernten Zweig übertragen"

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