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.

938voto

Stephan Punkte 15132

git cherry-pick <original commit sha>
Erstellt eine Kopie der ursprünglichen Übergabe und wendet die Übergabe im Wesentlichen erneut an

Die Rückgängigmachung der Rückgängigmachung bewirkt dasselbe, nur mit einer unübersichtlicheren Übergabemeldung:
git revert <commit sha of the revert>

Auf beiden Wegen können Sie git push ohne die Historie zu überschreiben, da nach dem Revert ein neuer Commit erstellt wird.
Wenn Sie den Commit Sha eingeben, benötigen Sie normalerweise nur die ersten 5 oder 6 Zeichen:
git cherry-pick 6bfabc

531voto

Adam Dymitruk Punkte 116211

Wenn Sie diese Änderung noch nicht veranlasst haben, git reset --hard HEAD^

Ansonsten ist die Rückgängigmachung der Rückgängigmachung völlig in Ordnung.

Eine andere Möglichkeit ist git checkout HEAD^^ -- . y luego git add -A && git commit .

78voto

Nestor Milyaev Punkte 4616

Ein Revert-Commit ist genau wie jeder andere Commit in Git. Das heißt, Sie können ihn rückgängig machen, wie in:

git revert 648d7d808bc1bca6dbf72d93bf3da7c65a9bd746

Das macht natürlich erst Sinn, wenn die Änderungen gepusht wurden, und vor allem, wenn Sie den Push auf den Zielzweig nicht erzwingen können (was eine gute Idee für Ihre Meister Zweig). Wenn die Änderung nicht gepusht wurde, machen Sie einfach Cherry-Pick, Revert oder entfernen Sie einfach den Revert-Commit wie in anderen Beiträgen beschrieben.

In unserem Team haben wir die Regel, eine zurückkehren auf Revert Commits, die im Hauptzweig committed wurden, hauptsächlich um die Historie sauber zu halten, so dass Sie sehen können, welcher Commit was revertiert:

     7963f4b2a9d    Revert "Revert "OD-9033 parallel reporting configuration"
     "This reverts commit a0e5e86d3b66cf206ae98a9c989f649eeba7965f.
                    ...
     a0e5e86d3b6    Revert "OD-9055 paralel reporting configuration"
     This reverts commit 648d7d808bc1bca6dbf72d93bf3da7c65a9bd746.
                ...
     Merge pull request parallel_reporting_dbs to master* commit 
    '648d7d808bc1bca6dbf72d93bf3da7c65a9bd746'

Auf diese Weise können Sie die Geschichte zurückverfolgen und die ganze Geschichte herausfinden, und auch diejenigen, die das Erbe nicht kennen, können es sich selbst erschließen. Wenn Sie hingegen . o neu gründen geht diese wertvolle Information verloren (es sei denn, Sie fügen sie in den Kommentar ein).

Wenn ein Commit mehr als einmal rückgängig gemacht und erneut rückgängig gemacht wird, wird das natürlich ziemlich chaotisch.

44voto

rafee_que_ Punkte 709

Die Rückgängigmachung der Rückgängigmachung wird den Zweck erfüllen

Zum Beispiel,

Wenn abcdef ist Ihr Commit und ghijkl ist der Commit, den Sie haben, wenn Sie den Commit rückgängig machen abcdef und dann ausführen:

git revert ghijkl

Dadurch wird die Umkehrung rückgängig gemacht

10voto

Affes Salem Punkte 592

Wenn Sie versehentlich eine Rückgängigmachung durchgeführt haben:

git revert <commit-id>

müssen Sie einfach laufen:

git cherry-pick <commit-id>

Ich musste meine Änderungen mit diesem Befehl zur Verarbeitung übergeben.

Sie können die ID Ihrer Übertragungen abrufen, indem Sie diese ausführen:

git log --pretty=format:"%h - %an, %ar : %s"

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