wake-up-neo.net

Wie kann ich eine Zusammenführung abbrechen?

Ich bin neu in der Zusammenarbeit mit Mercurial. Meine Situation:

  • Ein anderer Programmierer hat die Version 1 einer Datei geändert, um Einrückungen mit 4 Leerzeichen durch Einrückungen mit 2 Leerzeichen zu ersetzen. (Das heißt, jede Zeile wurde geändert.) Rufen Sie die Rev. 2 auf, und drücken Sie sie auf die Fernbedienung.
  • Ich habe wesentliche Änderungen in Version 1 mit verschiedenen Codeänderungen in meinem lokalen Arbeitsbereich vorgenommen. Nenne das Rev. 3.
  • Ich habe hg pulled und hg merged ohne eine klare Vorstellung davon, was los war.
  • Die Konflikte sind unzählig und nicht wirklich substanziell.

Daher wünschte ich mir wirklich, ich hätte mein lokales Repo vor dem Zusammenführen in Einrückungen mit zwei Leerzeichen geändert. dann wird die Verschmelzung trivial sein (nehme ich an). Aber ich kann nicht zurücktreten. Ich denke, ich muss hg update -r 3 aber es heißt abort: outstanding uncommitted merges.

Wie kann ich die Zusammenführung rückgängig machen, den Abstand in meinem lokalen Repo ändern und erneut zusammenführen?

126
Grumdrig

Sie können nicht festgeschriebene Änderungen mit dem Flag -C (oder --clean) verwerfen:

hg update -C -r 3

ACHTUNG: Alles, was nicht begangen wurde, wird verschwunden sein!

Danach sollten Sie wahrscheinlich eine Art Code-Formatierungs-Tool verwenden, um den gesamten Vorgang durchzuführen, oder zumindest einige durch reguläre Ausdrücke suchen und ersetzen. Etwas so Einfaches wie das Ersetzen der Übereinstimmungen ^____ (4 Leerzeichen anstelle von Unterstrichen) durch __ (2 Leerzeichen), das einige Male wiederholt wird (es sei denn, Sie haben wahnsinnig viel verschachtelten Code), sollte funktionieren.

121

Übrigens: Wenn Sie die Zusammenführung, die Sie vorgenommen haben, nur rückgängig machen und 3 nicht Ihre Revisionsnummer ist, können Sie dies tun:

hg update -C -r .
123
math

Verwenden Sie, um eine nicht festgeschriebene Zusammenführung rückgängig zu machen

hg update --clean

dadurch wird eine saubere Kopie des ursprünglichen übergeordneten Zusammenführungselements ausgecheckt, und alle Änderungen gehen verloren.

30
Tao

Ich musste anscheinend nur hg update -C -r 3, der meine lokalen Dateien mit Rücksicht auf die Revision überschreibt (was ich dachte hg update würdest du; aber ich habe mich geirrt.) Danke für meine Hilfe!

2
Grumdrig