Ich möchte eine Zwischenmischung (entfernen, nicht Squash) entfernen und dann die letzten 2 Commits in einen neuen Zweig verschieben.Wie entfernt man eine Zwischenmischung in git?
Dies ist meine aktuelle git log --graph
:
* 3a5c453 - (2 hours ago) last commit (HEAD, master)
* b6c19f1 - (2 hours ago) Merge branch 'tade' into HEAD
|\
* | be356d0 - (2 hours ago) previous commit
| * 65328dc - (3 hours ago) some other commit in branch tade
Ich möchte mit diesem am Ende:
* bbbbbbb - (some time in the future) a later commit on tade (tade)
* | aaaaaaa - (some time in the future) a later commit on master (master)
| * | 3a5c453 - (2 hours ago) last commit (HEAD, newone)
| * | be356d0 - (2 hours ago) previous commit
|/ |
| * 65328dc - (3 hours ago) some other commit in branch tade
Ich dachte an git rebase -i
mit der Zusammenführung mit dem Zweig tade zu entfernen und dann eine git branch newone
und git reset --hard HEAD^2
, um die letzten 2 Commits in den neuen Zweig zu verschieben. Als ich aber die Rebase gemacht habe, hat sie mir alle Commits vom Tade-Zweig gezeigt, die in Master und | zögerte, sie zu löschen.
Gibt es einen besseren Weg oder sollte ich damit fortfahren?
BEARBEITEN: Ich aktualisierte den beabsichtigten Zustandsgraphen, um es klarer zu machen. Die 2 neue commit (aaaaaaa
und bbbbbbb
) gibt es nur den Zustand zu veranschaulichen ein wenig besser (ich hoffe)
Ich bin wirklich verwirrt durch diese vertikalen Linien in Ihrem gewünschten Ergebnis. Gibt es da oben noch etwas anderes, auf dem Ast Tade und auf ... was auch immer implizierte Zweig ist ganz links? – Cascabel
Es wäre auch hilfreich, wenn Sie Ihren aktuellen HEAD mit einem tatsächlichen Zweignamen versehen und uns sagen würden, wie genau Sie 'rebase -i' aufgerufen haben. – Cascabel
Sorry, ich bin neu in der git log --graph Ausgabe. Ich werde die Grafik ändern, um den beabsichtigten Zustand zu verdeutlichen. – Kostas