NICHT EMPFOHLEN

NICHT EMPFOHLEN

Ich habe mehrere Commits vorgenommen. Dann musste ich zum Commit in der Mitte zurückkehren. Habe dort Änderungen vorgenommen und einen neuen Zweig erstellt. Jetzt möchte ich alle anderen Commits überspringen (entfernen, löschen) und den Zweig als Masterversion verwenden. Aber ich weiß nicht, wie das geht.

Hier einige Erklärungen zur Situation:

commit1 (latest)
commit2
commit3 (head pointing here)
other commits...

Am Punkt commit3habe ich Änderungen vorgenommen und einen neuen Zweig erstellt, um sie zu pushen.

Jetzt möchte ich die Zweigversion zur Hauptversion machen und dabei commit2und entfernen commit1.

Antwort1

Da Sie gepusht haben, ist die Option, bei der am wenigsten wahrscheinlich etwas kaputt geht, wahrscheinlich git revert:

git checkout master
git revert commit1 commit2
git merge new-branch
git push

Beachten Sie, dass dies dazu führt, dass der Master über genau dieselben Dateien wie der neue Zweig verfügt, Commit1 und Commit2 jedoch weiterhin in der Historie des Masters vorhanden sind, zusammen mit zwei zusätzlichen Commits, die ihre Änderungen rückgängig machen.


NICHT EMPFOHLEN

Wenn Sie Commits, die Sie bereits vom Master gepusht haben, wirklich, wirklich entfernen möchten, benachrichtigen Sie zuerst alle Ihre Teamkollegen, dass Sie wahrscheinlich Dinge kaputt machen werden, und verwenden Sie dann git reset:

git checkout master
git reset --hard commit3
git merge new-branch
git push -f

--hardentfernt alle durch Commit1 und Commit2 vorgenommenen Änderungen aus Ihrem Dateisystem. Sie können verwenden, --softum diese Änderungen im Dateisystem beizubehalten und gleichzeitig diese Commits zu entfernen.

Sie können Ihre Teamkollegen auf die Dokumentation verweisen fürWiederherstellen nach einer Upstream-Rebase(git reset verweist auf diesen Abschnitt, wenn die Verwendung reset --hardbereits gepushter Commits gemeint ist).

verwandte Informationen