955 Stimmen

Wie man den letzten nicht gepushten Git-Commit ohne den Verlust der Änderungen zurücksetzt

Gibt es eine Möglichkeit, einen Commit rückgängig zu machen, so dass meine lokale Kopie die Änderungen behält, die in diesem Commit gemacht wurden, aber sie werden zu nicht committeten Änderungen in meiner Arbeitskopie? Das Zurücksetzen eines Commits führt Sie zum vorherigen Commit - ich möchte die gemachten Änderungen behalten, aber ich habe sie in den falschen Branch committet.

Dies wurde nicht gepusht, nur committet.

11voto

Xys Punkte 5728

2020 einfacher Weg :

git reset 

Commit-Hash des letzten Commits, den Sie behalten möchten.

5voto

Mubashar Punkte 11792

Meistens passiert es mir, wenn ich Änderungen in den falschen Branch pushe und es später merke. Und meistens funktioniert folgendes.

git revert commit-hash
git push

git checkout my-other-branch
git revert revert-commit-hash
git push
  1. Das Commit rückgängig machen
  2. (Erstellen und) zu anderen Branch wechseln
  3. Das rückgängig gemachte Commit rückgängig machen

1voto

Mohit Singh Punkte 5565

Bitte stellen Sie sicher, dass Sie Ihre Änderungen sichern, bevor Sie diese Befehle in einem separaten Ordner ausführen

git checkout branch_name

Wechseln Sie auf Ihren Branch

git merge --abort

Beenden Sie den Merge-Vorgang

git status

Überprüfen Sie den Status des Codes nach dem Abbrechen des Merges

git reset --hard origin/branch_name

Diese Befehle setzen Ihre Änderungen zurück und bringen Ihren Code mit dem Code des branch_name (Branch) in Einklang.

0voto

Jolly Good Punkte 101

Füge Schritte hinzu, die ich befolgt habe, in der Hoffnung, dass sie für einen Anfänger wie mich hilfreich sind.

Das folgende Bild zeigt die Commits, die ich bereits in den Remote-Branch 'A' in Bitbucket gepusht habe. Geben Sie hier eine Bildbeschreibung ein

Von diesen 5 Commits möchte ich die letzten 2 so belassen, wie sie sind, aber die ersten 3 Commits möchte ich in einen anderen Branch 'B' gepusht haben.

Das sind die Schritte, die ich befolgt habe:

Innerhalb des Branches 'A':

  1. git revert für jeden der 3 Commits. Als Beispiel ist d4a3734 der Commit-Hash des letzten Commits im Bild. (Wenn du möchtest, kannst du mehrere Commits auf einmal revertieren - siehe Wie revertiert man mehrere Git-Commits?)
  2. git push

Nach dem Push sah es so aus:

Geben Sie hier eine Bildbeschreibung ein

Jetzt habe ich nur noch die ersten 2 Commits in meinem Branch 'A', was ich wollte. Als nächstes wechseln Sie zum gewünschten Branch. Wenn es sich um einen neuen Branch handelt, verwenden Sie git checkout -b . In meinem Fall habe ich git checkout B gemacht.

Innerhalb des Branches 'B':

Ich habe einfach die gewünschten Commits in den Branch 'B' übernommen. In meinem Fall habe ich folgendes gemacht:

git cherry-pick  

für die 3 Commits, die ich revertiert habe.

(Nochmals, als Beispiel, git cherry-pick d4a3734 wobei d4a3734 der Commit-Hash des letzten Commits im Bild ist)

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