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

5voto

Serg Burlaka Punkte 2181

Ich habe bereits gedrückt. Ich muss einige Commits aus der Ferne zurückgeben. Habe viele Varianten ausprobiert, aber nur ce von Justin via git bush funktioniert bei mir einwandfrei:

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

5voto

Shajed Punkte 577
// display git commit log    
$ git log --pretty=oneline --abbrev-commit

// show last two commit and open in your default editor
// then delete second commit line and save it
$ git rebase -i HEAD~2

Referenz: Wie löscht man eine Übertragung in Git, lokal und remote

4voto

Lava Sangeetham Punkte 2464

Sichern Sie Ihren Code in einem temporären Ordner. Mit dem folgenden Befehl wird der Server zurückgesetzt.

git reset --hard HEAD
git clean -f
git pull

Wenn Sie Ihre Änderungen beibehalten und die letzten Übertragungen entfernen möchten

git reset --soft HEAD^
git pull

2voto

ankit Punkte 2225

delete local commit

Wie Sie auf dem obigen Bild sehen können, möchte ich revert "test change 2" commit(SHA1 ID löschen: 015b5220c50e3dfbb1063f23789d92ae1d3481a2 (Sie können die SHA1-ID erhalten, indem Sie gitk Befehl in der Git-Bash)).

Dafür kann ich verwenden (alle unten genannten Befehle funktionieren nur lokal. Sie müssen nach dem Löschen drücken):

  1. git reset --hard 515b5220c50e3dfbb1063f23789d92ae1d3481a2 //es sichert Sie zu dieser Übertragung (SHA1-ID von Teständerung 4 ist 515b5220c50e3dfbb1063f23789d92ae1d3481a2 )
  2. git reset --hard HEAD~1 // es sichert Sie vor einer Übergabe.
  3. git reset --hard HEAD^ // So entfernen Sie die letzte Übertragung aus git

nach dem Löschen:

after delete commit

2voto

Vidhu Verma Punkte 184

Da es hier mehr als 30 Antworten gibt, werde ich es einfach halten und sagen, was für mich funktioniert

Das Löschen der .git-Ordner kann zu Problemen in Ihrem Git-Repository führen. Wenn Sie die gesamte Commit-Historie löschen, den Code aber in seinem aktuellen Zustand belassen wollen, ist es sehr sicher, dies wie folgt zu tun:

Kasse

git checkout --orphan latest_branch

Alle Dateien hinzufügen

git add -A

Übernehmen Sie die Änderungen

git commit -m "commit message"

Löschen Sie die Verzweigung

git branch -D master

Den aktuellen Zweig in master umbenennen

git branch -m master

Schließlich aktualisieren Sie Ihr Repository mit Gewalt

git push -f origin master

PS: Ihre alte Commit-Historie bleibt dabei nicht erhalten.

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