Ich habe einige Commits gemacht und sie in mein Repository geschoben. Dann habe ich eine Pull-Anfrage gemacht, aber ich habe bemerkt, dass es einige Commits gibt, die ich nicht in der Pull-Anfrage haben möchte.
Sie sehen so aus:
%Vor%Wenn ich diese Commits loswerden möchte:
%Vor%Wie mache ich das? Beachten Sie, dass ich diejenigen, die in der Zeit davor liegen, diejenigen behalten möchte, die ich löschen möchte:
%Vor%Sie können eine interaktive Neuanmeldung durchführen.
Angenommen, Ihr Kopf befindet sich in Ihrem Beispiel in ab1c41c
, rufen Sie die Rebase wie folgt auf
Dies sagt Git, dass Sie die letzten 8 Commits manipulieren wollen. Sie werden in Ihren Editor mit einer Auflistung der Commits und einiger Anweisungen eingefügt.
Löschen Sie die Zeilen, die die zu entfernenden, zu speichernden und zu beendenden Commits enthalten. Git wird die Rebase vorbereiten, und das war's.
Denken Sie daran, dass Sie wegen der Rebase die Option --force
weitergeben müssen, wenn Sie zum selben Zweig wechseln möchten.
Haftungsausschluss Rebasing und Zwangssteuern können dazu führen, dass du Arbeit verlierst oder Leute verärgerst, also vergewissere dich, dass du verstehst, was du tust. :)
Da Blake Taylor hier erwähnt hat, können Sie interaktives Rebase , um Commits neu zu ordnen (oder) Zwischen-Commits zu entfernen.
Aber das muss getan werden, bevor Sie diese Commits in das öffentliche Repository schieben. Siehe hier . In Ihrem Fall sind diese Commits bereits im öffentlichen Repo verfügbar. Also, ich empfehle nicht, Rebase zu verwenden.
Wenn Sie diese Commits in Ihrem Arbeitsverzeichnis nicht möchten.
a) Erstellen Sie eine Verzweigung, die auf 86f2509 (das letzte stabile Commit in Ihrem Arbeitsbaum) zeigt.
git checkout -b <branch name> 86f2509
b) Cherry Pick
die Commits, die Sie wollen. In Ihrem Fall ab1c41c
und 8b38955
.
git cherry-pick 8b38955 ab1c41c
Jetzt hat Ihr Arbeitsverzeichnis diese unerwünschten Commits nicht mehr.
Setzen Sie einfach mit --hard auf das Commit kurz vor:
%Vor%Vorsicht: Sie werden diese Commits für immer verlieren, keine Möglichkeit, zurück zu gehen. Auch wenn jemand die Commits eingezogen hat, die Sie loswerden wollen, können die Dinge unordentlich werden. In diesem Fall würden Sie sich wahrscheinlich "git revert" ansehen.
Tags und Links git git-rebase