2016-05-20 18 views
1

Letzte Nacht habe ich eine Zusammenführung begonnen; und vergaß es zu begehen.Wie kann man einen HG-Merge abbrechen, ohne Änderungen an der Arbeitskopie zu verlieren?

Später habe ich einige Änderungen an der Arbeitskopie vorgenommen.

Heute möchte ich nicht mehr zusammenführen (wie ich bei einer neueren Version zusammenführen), aber ich möchte die lokalen Arbeitsänderungen beibehalten. Die Änderungen sind unabhängig von einer Zusammenführungsauflösung.

Wie können die lokalen Änderungen beibehalten (und/oder später erneut angewendet) werden, während die aktuelle Zusammenführung abgebrochen wird?


Mit shelve auf den lokalen Änderungen wurde nicht erlaubt:

$ hg shelve foo/bar 
abort: cannot shelve while merging 

ein hg up -C Mit dem normalen Weg, um ‚eine Zusammenführung abbrechen‘, würde die lokalen Änderungen beseitigen.


ist nicht auf diese Weise How to 'hg merge' without affecting the working directory? weil eine Zusammenführung bereits begonnen wurde, begangen einfach nicht. Antworten, die das Beenden des Commits und das Auswählen von Änderungen einschließen, sind geeignet, wenn dies einfach gezeigt werden kann, obwohl die Frage sich auf "Abbrechen ohne das Commit" konzentriert.

+0

Können Sie die Änderungen exportieren, die Sie als Patches behalten möchten? Es wäre möglicherweise ein bisschen arbeitsintensiv, nehme ich an. – Nanhydrin

+0

@Nanhydrin Ich bin an jedem Prozess interessiert, der durchgeführt werden könnte, während in solchen Fällen die Mühsal der Genesung minimiert wird. Ich fand etwas Magie, um Hg dazu zu bringen zu denken, dass es nicht in der Mitte einer Zusammenführung war, aber so scheint es, dass es als ein magischer Trick behalten werden sollte:} – user2864740

Antwort

3

Die einfachste Lösung ist wahrscheinlich die Änderungen vorübergehend in einem geheimen aufzuzeichnen zu begehen und dann zu dem zurückkehren begehen, zum Beispiel:

hg resolve -m -a      # mark all files as resolved 
hg commit -s -m "Savepoint."   # Temporary commit. 
hg update .^       # Back to original revision. 
             # (Use ".^" in cmd.exe on Windows.) 
hg revert -r tip --all     # Revert files to saved commit. 
hg diff        # Verify that you've got all the changes. 
hg strip -r tip --keep     # And discard the temporary commit. 

Wir haben ein Geheimnis verwenden hier begehen, so dass sie nicht versehentlich gedrängt werden, wenn Sie vergessen, es zu entfernen (oder wenn Sie planen, es danach zu behalten).

Wenn Sie die Erweiterung evolve verwenden, ist hg prune -r tip gegenüber hg strip -r tip --keep vorzuziehen, da das temporäre Commit weiterhin (versteckt) bleibt, falls Sie später darauf verweisen müssen.