Sie vier Möglichkeiten haben: den merge
Befehl mit dem --no-commit
Flag verwendet, unter Verwendung von revert
nach einem merge
, ein selektiven rebase
oder cherry-pick
verwenden.
Das Zusammenführen mit --no-commit
ist wahrscheinlich das Beste, um die Historie zu erhalten, aber es wird mehr Arbeit erfordern, da Sie die Änderungen manuell zurücksetzen müssen, bevor Sie sich verpflichten.
Eine andere Option ist merge
, dann wird revert
mit git revert
geändert. Dies wird die Geschichte jedoch nur noch unordentlicher machen.
Wenn Sie sich nicht darum kümmern, dass die Historie "pure" ist, können Sie einfach rebase
verwenden, aber das funktioniert nur sicher, wenn Sie Ihre Änderungen nicht bereits auf das allgemeine Repo übertragen haben (wenn Sie mit anderen arbeiten). oder Sie tun die Rebase von einem wegwerfenden Zweig. Sie würde so etwas tun:
git rebase --interactive master 1.3.6
Dies würde rebase
Ihre Änderungen auf Meister von 1.3.6
, würde aber zunächst können Sie wählen, welche zu halten verpflichtet, zu bearbeiten oder zu ignorieren. Ich bin mir ziemlich sicher, dass es jeden Zweig löschen Sie eine rebase
aus tun, so sollten Sie wahrscheinlich einen anderen Weg werfen Zweig an der gleichen Stelle wie 1.3.6
vor Ihnen rebase
machen, dann machen master
Punkt auf die gleiche Verpflichtung wie die Wegwerf-Filiale, dann Löschen Sie schließlich den Wegwerfzweig.
Mit cherry-pick
können Sie Commits selektiv zusammenführen, ohne sich jedoch beide Eltern explizit zu merken. Wenn der Zweig 1.3.6
im ursprünglichen Repo beibehalten wird, ist es keine besonders große Sache, beide Merge-Parents nicht zu haben, da Sie den Verlauf irgendwo noch haben, und cherry-pick
kann automatisch auf die Commit-Nummer in der Beschreibung verweisen. Dies schafft eine unreine Geschichte wie eine selektive rebase
tut.
Am Ende hängt es davon ab, ob Sie um den Zweig 1.3.6
halten und wie Sie Ihre Geschichte schließlich aussehen soll.
Klingt wie ein Job für 'Cherry-Pick'. – isherwood
Danke @isherwood –