Was ist angesichts einer Änderung, die mit festgeschrieben commit
und dann mit zurückgesetzt wurde revert
, der beste Weg, um diese Rückgängigmachung rückgängig zu machen?
Idealerweise sollte dies mit einem neuen Commit erfolgen, um den Verlauf nicht neu zu schreiben.
Antworten:
Wenn Sie diese Änderung noch nicht vorangetrieben haben,
git reset --hard HEAD^
Andernfalls ist das Zurücksetzen des Zurücksetzens vollkommen in Ordnung.
Ein anderer Weg ist zu
git checkout HEAD^^ -- .
und danngit add -A && git commit
.quelle
git cherry-pick
oder alternativgit revert
die einfachsten Möglichkeiten sind, eine Rückstellung rückgängig zu machen.Otherwise, reverting the revert is perfectly fine.
und dann auch zu erklären, was zugit checkout HEAD^^ -- .
tun ist.git add -A
... es sei denn, Sie möchten jede Datei zur Versionskontrolle hinzufügen, was höchstwahrscheinlich nicht das ist, was Sie wollen.git cherry-pick <original commit sha>
Erstellt eine Kopie des ursprünglichen Commits und wendet das Commit im Wesentlichen erneut an
Das Zurücksetzen des Zurücksetzens bewirkt dasselbe mit einer unordentlicheren Festschreibungsnachricht:
git revert <commit sha of the revert>
Auf beide Arten können Sie den Verlauf
git push
nicht überschreiben, da nach dem Zurücksetzen ein neues Commit erstellt wird.Wenn Sie das Commit sha eingeben, benötigen Sie normalerweise nur die ersten 5 oder 6 Zeichen:
git cherry-pick 6bfabc
quelle
Ein Revert-Commit ist genau wie jedes andere Commit in Git. Das heißt, Sie können es zurücksetzen, wie in:
Das offensichtlich macht nur Sinn , wenn die Änderungen geschoben wurden, und vor allem , wenn Sie nicht Push auf die Zielmietstation zwingen können (das ist eine gute Idee für Dich ist Master - Zweig). Wenn die Änderung nicht übernommen wurde, wählen Sie einfach das Commit "Zurücksetzen" aus, entfernen Sie es oder entfernen Sie es einfach wie in anderen Beiträgen beschrieben.
In unserem Team haben wir eine Regel einen verwenden revert auf Revert Commits , die in dem Hauptzweig begangen wurden, in erster Linie die Geschichte sauber zu halten, so dass Sie sehen können , welche kehrt zu begehen , was:
Auf diese Weise können Sie die Geschichte verfolgen und die ganze Geschichte herausfinden, und selbst diejenigen, die das Erbe nicht kennen, können es selbst herausfinden. Wenn Sie dagegen Dinge auswählen oder neu aufbauen , gehen diese wertvollen Informationen verloren (es sei denn, Sie nehmen sie in den Kommentar auf).
Wenn ein Commit mehr als einmal zurückgesetzt und zurückgesetzt wird, wird dies offensichtlich ziemlich chaotisch.
quelle
Das Zurücksetzen des Zurücksetzens reicht aus
Zum Beispiel,
Wenn
abcdef
es sich um Ihr Commit handelt undghijkl
um das Commit, das Sie beim Zurücksetzen des Commits habenabcdef
, führen Sie Folgendes aus:Dadurch wird das Zurücksetzen rückgängig gemacht
quelle
Es sieht für mich dumm aus. Aber ich war in der gleichen Situation gewesen und habe mich für rückgängig gemachte Commits zurückgezogen. Ich habe die Anzahl zurückgesetzt, also musste ich für jedes 'Zurücksetzen-Commit' zurücksetzen.
Jetzt sieht meine Commits-Geschichte ein bisschen komisch aus.
Es ist ein Haustierprojekt, also ist es in Ordnung. Aber für ein reales Projekt würde ich es vorziehen, zum letzten Commit zu gehen, bevor der gesamte zurückgesetzte Code in einem Commit und einem vernünftigeren Kommentar wiederhergestellt wird.
quelle
So habe ich es gemacht:
Wenn der Zweig
my_branchname
in einer Zusammenführung enthalten war, die zurückgesetzt wurde. Und ich wollte nicht zurückkehrenmy_branchname
:Ich mache zuerst eine
git checkout -b my_new_branchname
vonmy_branchname
.Dann mache ich einen
git reset --soft $COMMIT_HASH
Where$COMMIT_HASH
is Commit-Hash des Commits direkt vor dem ersten Commit vonmy_branchname
(siehegit log
).Dann mache ich ein neues Commit.
git commit -m "Add back reverted changes"
Dann schiebe ich den neuen Zweig hoch.
git push origin new_branchname
Dann habe ich eine Pull-Anfrage für den neuen Zweig gestellt.
quelle
Oder du könntest
git checkout -b <new-branch>
undgit cherry-pick <commit>
das vorher zum undgit rebase
fallen lassenrevert
. Pull-Anfrage wie zuvor senden.quelle
Wenn Ihnen die Idee des "Zurücksetzens eines Zurücksetzens" nicht gefällt (insbesondere wenn dies bedeutet, dass für viele Commits Verlaufsinformationen verloren gehen), können Sie jederzeit die Git-Dokumentation zum Thema "Zurücksetzen eines fehlerhaften Zusammenführens" aufrufen .
Angesichts der folgenden Ausgangssituation
(W ist Ihr anfängliches Zurücksetzen der Zusammenführung M; D und E sind Korrekturen an Ihrem anfänglich unterbrochenen Feature-Zweig / Commit)
Sie können jetzt einfach die Commits A bis E wiederholen, sodass keiner von ihnen zur rückgängig gemachten Zusammenführung "gehört":
Die neue Kopie Ihrer Filiale kann jetzt wieder zusammengeführt
master
werden:quelle
So erhalten Sie die nicht bereitgestellten und bereitgestellten Änderungen zurück, die nach einem Commit zurückgesetzt wurden:
So stellen Sie alle nicht bereitgestellten Löschungen wieder her:
quelle