Ich bin hier auf ein kleines Problem gestoßen: Ich hatte einen problemspezifischen Zweig 28s
in Git, den ich im allgemeinen develop
Zweig zusammengeführt habe. Es stellte sich heraus, dass ich es zu schnell gemacht hatte, also habe ich git-revert verwendet, um die Zusammenführung rückgängig zu machen. Nun aber ist die Zeit gekommen zu verschmelzen 28s
in develop
, aber git-merge - Befehl sieht die ursprüngliche merge, und kündigt glücklich , dass alles gut ist und Filialen sind bereits verschmolzen. Was mache ich jetzt? Erstellen Sie ein 'Revert "Revert" 28s -> Develop ""' Commit? Scheint kein guter Weg zu sein, aber ich kann mir im Moment keinen anderen vorstellen.
Wie die Baumstruktur aussieht:
git
git-merge
git-revert
Toms Mikoss
quelle
quelle
Antworten:
Sie müssen "das Zurücksetzen rückgängig machen". Abhängig davon, wie das Original wiederhergestellt wurde, ist es möglicherweise nicht so einfach, wie es sich anhört. Schauen Sie sich das offizielle Dokument zu diesem Thema an .
erlauben:
quelle
Nehmen wir an, Sie haben eine solche Geschichte
Wenn A, B fehlgeschlagen ist und W - von M zurückgesetzt wird
Bevor ich anfange, festgestellte Probleme zu beheben, wähle ich W Commit für meinen Zweig aus
Dann setze ich das W-Commit für meinen Zweig zurück
Nachdem ich weiter reparieren kann.
Die endgültige Geschichte könnte folgendermaßen aussehen:
Wenn ich eine PR sende, wird deutlich, dass PR rückgängig gemacht wird, und es werden einige neue Commits hinzugefügt.
quelle
So setzen Sie die Wiederherstellung zurück, ohne Ihren Workflow zu stark zu beeinträchtigen:
Ihr Feature-Zweig sollte nun wie gewohnt zusammengeführt werden können, wenn Sie dazu bereit sind. Der einzige Nachteil hierbei ist, dass Sie einige zusätzliche Merge / Revert-Commits in Ihrem Verlauf haben.
quelle
So setzen Sie eine Wiederherstellung in GIT zurück:
quelle
Anstatt zu verwenden, hätten
git-revert
Sie diesen Befehl in derdevel
Verzweigung verwenden können, um das falsche Zusammenführungs-Commit wegzuwerfen (rückgängig zu machen) (anstatt es nur zurückzusetzen).Dadurch wird auch der Inhalt des Arbeitsverzeichnisses entsprechend angepasst. Sei vorsichtig :
git-reset
. Alle Commits nach dem von Ihnen alsgit reset
Argument angegebenen Commit werden gelöscht!Ich empfehle, die
git-reset
Manpage sorgfältig zu lesen, bevor Sie dies versuchen.Jetzt können Sie nach dem Zurücksetzen Ihre Änderungen erneut anwenden
devel
und dann tunDies wird ein echter Druck aus seinem
28s
indevel
wie die anfänglichen (die jetzt von git Geschichte gelöscht wird).quelle
reset --hard
undpush origin
. Beachten Sie auch, dass ein Force Push to Origin offene PRs auf GitHub wirklich durcheinander bringen kann.Ich habe diesen Beitrag gerade gefunden, als ich vor dem gleichen Problem stand. Ich finde es oben ziemlich schwierig, Reset-Hards usw. zurückzusetzen. Am Ende lösche ich etwas, das ich nicht möchte, und werde es nicht zurückbekommen können.
Stattdessen habe ich das Commit überprüft, zu dem der Zweig zurückkehren soll, z
git checkout 123466t7632723
. Dann in einen Zweig umgewandeltgit checkout my-new-branch
. Ich habe dann den Zweig gelöscht, den ich nicht mehr wollte. Dies funktioniert natürlich nur, wenn Sie den Zweig, den Sie durcheinander gebracht haben, wegwerfen können.quelle
git reflog
schützt Sie für ein paar Monate vor einem Hard-Reset, falls Sie später feststellen, dass Sie die verlorenen Commits benötigen. Das Reflog ist auf Ihr lokales Repo beschränkt.Ich würde Ihnen empfehlen, die folgenden Schritte auszuführen, um eine Wiederherstellung rückgängig zu machen, z. B. SHA1.
Erstellen Sie nun PR für die Branche
users/yourname/revertOfSHA1
quelle
Zu diesem Zeitpunkt haben Sie einen sauberen "Entwicklungs" -Zweig, in den Sie Ihr Feature-Brach wie gewohnt zusammenführen können.
quelle