827 Stimmen

Wie hebe ich die Rückgängigmachung einer rückgängig gemachten Git-Übertragung auf?

Bei einer Änderung, die mit commit und dann zurückgesetzt mit revert Wie kann ich diese Rückgängigmachung dann am besten rückgängig machen?

Idealerweise sollte dies mit einem neuen Commit geschehen, um die Geschichte nicht neu zu schreiben.

8voto

Drew LeSueur Punkte 17709

Ich habe es folgendermaßen gemacht:
Wenn der Zweig my_branchname war in einer Zusammenführung enthalten, die rückgängig gemacht wurde. Und ich wollte die Rückgängigmachung my_branchname :

Ich mache zuerst eine git checkout -b my_new_branchname de my_branchname .
Dann mache ich eine git reset --soft $COMMIT_HASH donde $COMMIT_HASH ist der Commit-Hash des Commit-Rechts vor die erste Übertragung von my_branchname (siehe git log )
Dann mache ich eine neue Übergabe git commit -m "Add back reverted changes"
Dann schiebe ich den neuen Zweig hoch git push origin new_branchname
Dann habe ich einen Pull-Request für den neuen Zweig erstellt.

5voto

NobodysNightmare Punkte 2843

Wenn Ihnen die Idee, einen "Revert" rückgängig zu machen, nicht gefällt (vor allem, wenn dies den Verlust von Verlaufsinformationen für viele Commits bedeutet), können Sie jederzeit die Git-Dokumentation über "Eine fehlerhafte Zusammenführung rückgängig machen" .

Bei folgender Ausgangssituation

 P---o---o---M---x---x---W---x
  \         /
   A---B---C----------------D---E   <-- fixed-up topic branch

(W ist Ihre anfängliche Rückgängigmachung der Zusammenführung M; D und E sind Korrekturen an Ihrem anfänglich fehlerhaften Funktionszweig bzw. Ihrer anfänglichen Kommissionsmitteilung)

Sie können nun einfach die Commits A bis E wiederholen, so dass keiner von ihnen zu dem zurückgenommenen Merge "gehört":

$ git checkout E
$ git rebase --no-ff P

Die neue Kopie Ihres Zweigs kann nun in master wieder:

   A'---B'---C'------------D'---E'  <-- recreated topic branch
  /
 P---o---o---M---x---x---W---x
  \         /
   A---B---C----------------D---E

2voto

Ryan Chou Punkte 1056

Oder Sie könnten git checkout -b <new-branch> y git cherry-pick <commit> die vor zum und git rebase fallen zu lassen revert commit. sendet Pull Request wie zuvor.

2voto

Richa Goyal Punkte 31

Um die unstaged und staged Änderungen, die nach einem Commit rückgängig gemacht wurden, wiederherzustellen:

git reset HEAD@{1}

Wiederherstellung aller nicht gestaffelten Löschungen:

git ls-files -d | xargs git checkout --

0voto

Aviad Gispan Punkte 59

Ich hatte ein Problem, dass jemand einen Revert nach Master auf meinen Zweig gemacht hat, aber ich musste in der Lage sein, ihn wieder zusammenzuführen, aber das Problem ist, dass der Revert alle meine Commits einschloss. Betrachten wir den Fall, dass wir unseren Feature-Branch aus M1 erstellt haben, unseren Feature-Branch in M3 zusammenführen und in RM3 revertieren

M1 -> M2 -> M3 -> M4- > RM3 -> M5
 \.         /
  F1->F2 -

Wie kann die F2 in die M5 übergehen?

git checkout master
git checkout -b brach-before-revert
git reset --hard M4
git checkout master
git checkout -b new-feature-branch
git reset --hard M1 
git merge --squash brach-before-revert

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