875 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.

6voto

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 --

1voto

Jay Punkte 1

Nach der anfänglichen Panik, dass ich versehentlich alle meine Dateien gelöscht hatte, habe ich meine Daten wie folgt wiederhergestellt

git reset HEAD@{1}         
git fsck --lost-found      
git show 
git revert <sha that deleted the files>

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