Frage

Ich bin an einem Projekt arbeiten, wo ich ein, dass eine Funktion, mit großen Problemen eingeführt begehen, die nicht sofort entdeckt wurden. Jetzt möchte ich vollständig diese Revision zu entfernen, während die Arbeit es folgende halten, aber ich bin, um dieses 3-Wege-Merge eine harte Zeit, schlang meine Kopf. Hier ist eine vereinfachte grafische Darstellung meines Projektes.

o  changeset:   134:7f81764aa03a
|  tag:         tip
|  parent:      128:451d8a19edea
|  summary:     Backed out changeset 451d8a19edea
|
| @  changeset:   133:5eefa40e2a29
| |  summary:     (Change I need to keep keep)
| |
*snip 3 commits*
| o  changeset:   129:5f6182a97d40
|/   summary:     (Change I need to keep keep)
|
o  changeset:   128:451d8a19edea
|  summary:     (Change that introduced a major problem)
|
o  changeset:   127:4f26dc55455d
|  summary:     (summary doesn't matter for this question)

Wenn ich das richtig verstehen, r127 und r134 sind genau die gleiche. Als ich hg up -C -r 133 und dann hg merge laufen, erscheint Meld mit drei Formen einer meiner Dateien auf lokaler, Base und andere. lokal scheint R133 zu sein, aber ich habe eine harte Zeit, schlinge meinen Kopf um, was „Basis“ und „andere“ bedeuten.

War es hilfreich?

Lösung

Lokal R133

Andere R134

Basis ist R128 (die gemeinsame Vorfahre sowohl R133 und R 134)

Wenn Sie eine 3-Wege-Zusammenführung durchführen vergleicht sie alle drei dieser zusammen, um zu entscheiden, was zu nehmen und von wo. Wenn wir sehen, was Änderung in der anderen Revision ist und was der gemeinsame Vorfahr sah aus wie Sie sind in der Lage eine viel informierte Entscheidung darüber zu treffen, was zu ändern und was zu halten.

Andere Tipps

Ihre Frage ist wirklich verwirrend, aber hier sind einige Informationen, die Ihnen helfen können.

  • Was ist Basis?

Basis ist die unveränderte Version der Revision, dass Sie zur Zeit haben ausgecheckt und bearbeitet. wo möglicherweise andere Änderungen abgespalten haben (können Sie Revisionen zwischen Ihrem aktuellen lokalen und Basis haben!). es ist nur, wo die nächste Revision, wenn keine andere Gabel aus danach (gleichem Elternteil) (in Ihrem Fall r128) abgezweigt hat

  • Was ist Kopf?

Head ist die neueste Version in der Versionskontrolle. wenn Sie allein auf nur funktionieren, kopiert man es wahrscheinlich Basis sein wird. aber ein mitarbeiter die gleiche Datei geändert haben könnte und überprüfte sie in der Versionskontrolle, dann Kopf ist später als Ihre Basis.

  • Was ist die lokale?

Local ist die geänderte Version (in Ihrem Fall R133)

  • Was ist andere?

Andere ist die einige Gabel / Zweig, der auch Ihre Basis als Elternteil (in Ihrem Fall r134)

  • Wie funktioniert 3-Wege-Merge-Arbeit?

3-Wege-Merge funktioniert (zumindest in meld) hierarchisch. in der Regel von links nach rechts wie folgt aus:

local> Basis> Sonstiges / Kopf

local / Base ist meist trivial, weil er genau das, was Sie geändert

, dann können Sie Ihre Änderungen in den Kopf Revision oder einer Ihrer mitarbeiter fusionieren oder was auch immer.

Es kann mehrere andere / Kopf Revisionen sein, aber es ist dann nicht Ihre Aufgabe, zu fusionieren und damit in mehr als 3 Art und Weise zu vergleichen, ist nicht sinnvoll.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top