Sehen Sie sich Ihr Commit-Diagramm an (mit gitk oder einem ähnlichen Programm). Sie sehen Commits aus der Pull-Anforderung, und Sie sehen Ihre eigenen Commits und ein Merge-Commit (wenn es sich nicht um eine Schnellvorlauf-Merge handelt). Sie müssen nur die letzten Ihrer eigenen Commits vor dem Zusammenführen finden und den Zweig auf dieses Commit zurücksetzen.
(Wenn Sie das Reflog des Zweigs haben, sollte es noch einfacher sein, das Commit vor dem Zusammenführen zu finden.)
(Nach weiteren Informationen in den Kommentaren bearbeiten :)
Okay, schauen wir uns die Grafik an:
Ich gehe davon aus, dass das letzte (ganz rechts) Commit Ihre falsche Zusammenführung durch Pull-Anforderung war , bei der die hier gezeigte blaue Linie zusammengeführt wurde. Ihr letztes gutes Commit wäre das vorhergehende auf der schwarzen Linie, hier rot markiert:
Auf dieses Commit zurücksetzen, und es sollte Ihnen gut gehen.
Dies bedeutet, dass Sie dies in Ihrer lokalen Arbeitskopie tun müssen (nachdem Sie sichergestellt haben, dass Sie keine nicht festgeschriebenen Inhalte mehr haben, z. B. von git stash):
git checkout master
git reset --hard 7a62674ba3df0853c63539175197a16122a739ef
gitk
Bestätigen Sie jetzt, dass Sie sich wirklich auf dem Commit befinden, das ich dort markiert habe, und Sie werden keines der gezogenen Dinge in seiner Herkunft sehen.
git push -f origin master
(Wenn Ihre Github-Fernbedienung benannt ist origin
, ändern Sie den Namen.)
Jetzt sollte auch auf Github alles richtig aussehen. Die Commits befinden sich weiterhin in Ihrem Repository, sind jedoch für keine Zweigstelle erreichbar und sollten dort keinen Schaden anrichten. (Und sie werden natürlich immer noch im Repository von RogerPaladin sein.)
(Es gibt möglicherweise eine Github-spezifische Nur-Web-Methode, um dasselbe zu tun, aber ich bin mit Github und seinem Pull-Request-Verwaltungssystem nicht allzu vertraut.)
Beachten Sie, dass jemand, der Ihren Master möglicherweise bereits mit dem falschen Commit gezogen hat, das gleiche Problem hat wie Sie derzeit und nicht wirklich einen Beitrag leisten kann. vor dem Zurücksetzen auf Ihre neue Master-Version.
Wenn dies wahrscheinlich passiert ist oder Sie einfach nur Probleme vermeiden möchten, verwenden Sie git revert
stattdessen den Befehl git reset
, um die Änderungen mit einem neuen Commit zurückzusetzen, anstatt auf ein älteres zurückzusetzen. (Einige Leute denken, Sie sollten niemals mit veröffentlichten Zweigen zurücksetzen.) Weitere Antworten auf diese Frage finden Sie hier.
Für die Zukunft:
Wenn Sie nur einige der Commits von RogerPaladins Zweig möchten, sollten Sie cherry-pick
stattdessen anstelle von verwenden merge
. Oder kommunizieren Sie mit RogerPaladin, um sie in einen separaten Zweig zu verschieben und eine neue Pull-Anfrage zu senden.