Gibt es eine Möglichkeit, ein einzelnes Commit von einem Zweig auf einen anderen Zweig umzustellen?
Ich habe diese Zweigstruktur:
-- -- -- -- -- (Master)
\
-- -- -- -- -- XX (Feature-branch)
Alles, was ich tun möchte, ist, das letzte Commit von Feature-branch
auf Master neu zu setzen und Feature-branch
ein Commit zurückzusetzen.
-- -- -- -- -- XX (Master)
\
-- -- -- -- -- (Feature-branch)
Wie mache ich das?
Antworten:
Sie können XX auswählen, um zu meistern.
Und entfernen Sie das letzte Commit mit git reset aus dem Feature-Zweig.
quelle
cherry-pick
ließ sie so erscheinen, als ob sie vom alten Speicherort gelöscht und am neuen Speicherort erstellt wurden. Ich nehme an, Rebase hätte sich darum gekümmert, aber jetzt habe ich mich stromaufwärts geschoben, damit ich das nicht testen kann. Seien Sie auf jeden Fall vorsichtig, wenn Sie eine ähnliche Situation haben.Feature-branch
an der Herkunft vorzunehmen , müssen Sie dies tun,git push -f origin Feature-branch
da Ihre ÄnderungFeature-branch
jetzt als 1 Commit hinter dem angesehen wirdorigin/Feature-branch
.Darin heißt es: "Den Bereich der Festschreibungen zwischen dem letzten Zweig und dem Zweig (dh dem XX-Festschreiben) an der Spitze des Hauptzweigs neu festlegen."
Nach diesem Vorgang wird der
branch
Tipp beim Festschreiben verschobenXX
, sodass Sie ihn mit zurücksetzen möchtenDarin heißt es: "Setzen Sie die Verzweigungsspitze vor ihrem vorherigen Status auf das Commit zurück."
Ein Kirschpickel ist also eine einfachere Lösung ...
quelle
--onto
sodass ich möglicherweise etwas falsch mache. Übrigens sagte der OP Rebase, aber es scheint, als wolle er einen Kirschpickel machen.Das ist eigentlich ganz einfach. Die Lösung besteht darin, eine interaktive Rebase durchzuführen und alle Commits zu "löschen", die Sie nicht in die Rebase aufnehmen möchten.
git rebase -i <target_branch>
Wotarget_branch
ist der Zweig, auf den Sie zurückgreifen möchten?Anschließend bearbeiten Sie die geöffnete Datei und
pick
die gewünschten Commits unddrop
(oderd
kurz) alle Commits, die Sie nicht mitbringen möchten.quelle
@ Charles Antwort ist korrekt. Wie auch immer, ich habe dies so oft verwendet, vor allem, um bestimmte Konfigurationen in einem Projekt neu zu starten
dass ich einen neuen Befehl dafür erstelle:
Normalerweise möchten Sie Zweigstellennamen für diesen Befehl automatisch vervollständigen. Fügen Sie ihn hinzu, indem Sie diese Funktion beziehen (Hinzufügen zu .bashrc oder .profile):
git autocomplete sucht danach
Sie können diesen Befehl folgendermaßen verwenden:
Wenn Sie Features richtig unterteilen, sind die Möglichkeiten endlos.
Ich denke, das ist es, was Quilt- Leute gerne machen.
Dieser Befehl funktioniert trotzdem mit allen von Ihnen angegebenen sha / ref:
quelle
Hier ist eine weitere Option:
Befehle sehen aus wie:
Es ist kein Rebase-Befehl, nein, aber es ist eine Rebase im Geiste.
quelle