In Git kann ich das machen:
1. Arbeiten Sie an einer neuen Funktion: $ git co -b newfeature-123 # (ein Zweig für die Entwicklung lokaler Features) mache ein paar Commits (M, N, O) Meister A --- B --- C. \. newfeature-123 M --- N --- O. 2. Ziehen Sie neue Änderungen vom Upstream-Master ab: $ git pull (Master aktualisiert mit ff-Commits) Meister A --- B --- C --- D --- E --- F. \. newfeature-123 M --- N --- O. 3. Master ausbauen, damit meine neue Funktion kann gegen die neuesten vorgelagerten Änderungen entwickelt werden: (von newfeature-123) $ git Rebase Master Meister A --- B --- C --- D --- E --- F. \. newfeature-123 M --- N --- O.
Ich möchte wissen, wie man dasselbe in Mercurial macht, und ich habe das Web nach einer Antwort durchsucht , aber das Beste, was ich finden konnte, war: git rebase - kann ich das?
Dieser Link enthält zwei Beispiele:
1. Ich gebe zu, dass dies: (Ersetzen der Revisionen aus dem Beispiel durch die aus meinem eigenen Beispiel)
hg up -CF hg branch -f newfeature-123 hg Transplantation -a -b neue Funktion-123
ist nicht schlecht, außer dass es das MNO vor dem Rebase als nicht zusammengeführten Kopf zurücklässt und 3 neue Commits M ', N', O 'erstellt, die sie darstellen, die von der aktualisierten Hauptlinie abzweigen.
Grundsätzlich ist das Problem, dass ich am Ende folgendes habe:
Meister A --- B --- C --- D --- E --- F. \ \ newfeature-123 \ M '--- N' --- O ' \. newfeature-123 M --- N --- O.
Dies ist nicht gut, da es lokale, unerwünschte Commits hinterlässt, die gelöscht werden sollten.
- Die andere Option über denselben Link ist
hg qimport -r M: O. hg qpop -a hg up F. hg branch newfeature-123 hg qpush -a hg qdel -r qbase: qtip
und dies führt zu dem gewünschten Graphen:
Meister A --- B --- C --- D --- E --- F. \. newfeature-123 M --- N --- O.
Aber diese Befehle (alle 6!) scheinen so viel komplizierter zu sein als
$ git Rebase Master
Ich möchte wissen, ob dies das einzige Äquivalent in Hg ist oder ob es einen anderen Weg gibt, der so einfach ist wie Git.
git reflog
und sie sind nicht vollständig verschwunden, bis sie Müll gesammelt haben. Wenn Sie sie in einem benannten Zweig behalten möchten, damit Sie das Reflog nicht verwenden müssen, tun Sie dies einfachgit branch feature-123_original
vor dem erneuten Basieren.