1328 Stimmen

Wie lösche ich nicht gepushte Git-Commits?

Ich habe aus Versehen in den falschen Branch committet. Wie kann ich diesen Commit löschen?

2557voto

dbyrne Punkte 55447

Löschen Sie den letzten Commit und behalten die Arbeit, die Sie geleistet haben:

git reset --soft HEAD~1

Löschen Sie den letzten Commit und zerstören die Arbeit, die Sie geleistet haben:

git reset --hard HEAD~1

398voto

Ashkan S Punkte 8690

Ich frage mich, warum die beste Antwort, die ich gefunden habe, nur in den Kommentaren ist! (von Daenyth mit 86 Upvotes)

git reset --hard origin

Mit diesem Befehl wird das lokale Repository mit dem Remote-Repository synchronisiert und alle Änderungen, die Sie lokal vorgenommen haben, verworfen. Sie können auch Folgendes tun, um den genauen Branch abzurufen, den Sie im Ursprung haben, wie Cleary es in den Kommentaren vorgeschlagen hat.

git reset --hard origin/

65voto

VonC Punkte 1117238

Don't delete it: for just one commit git cherry-pick is enough.

Aber wenn Sie mehrere Commits auf dem falschen Branch haben, zeigt sich hier git rebase --onto:

Angenommen, Sie haben dies:

 x--x--x--x <-- master
           \
            -y--y--m--m <- y-Zweig mit Commits, die auf dem master-Zweig hätten sein sollen

Dann können Sie master markieren und ihn dorthin verschieben, wo er sein soll:

 git checkout master
 git branch tmp
 git checkout y
 git branch -f master

 x--x--x--x <-- tmp
           \
            -y--y--m--m <- y-Zweig, Master-Zweig

, setzen Sie den y-Zweig zurück, wo er sein sollte:

 git checkout y
 git reset --hard HEAD~2 # ~1 in Ihrem Fall,
                         # oder ~n, n = Anzahl der zu stornierenden Commits

 x--x--x--x <-- tmp
           \
            -y--y--m--m <- Master-Zweig
                ^
                |
                -- y-Zweig

und schließlich verschieben Sie Ihre Commits (wenden sie erneut an und erstellen tatsächlich neue Commits):

 git rebase --onto tmp y master
 git branch -D tmp

 x--x--x--x--m'--m' <-- master
           \
            -y--y <- y-Zweig

21voto

Hank Gay Punkte 67607

Führen Sie ein git rebase -i FAR_ENOUGH_BACK durch und lassen Sie die Zeile für den Commit fallen den Sie nicht möchten.

8voto

Alexander Groß Punkte 9454

Wenn Sie diesen Commit in einen anderen Branch verschieben möchten, erhalten Sie den SHA des betreffenden Commits

git rev-parse HEAD

Dann wechseln Sie zum aktuellen Branch

git checkout other-branch

Und cherry-pick den Commit zum other-branch

git cherry-pick

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