2010-10-20 6 views
68

Ho combinato una fusione. Mi piacerebbe tornare e poi riprovare.
C'è un modo per ripristinare un'unione prima che venga eseguito il commit?Come interrompere una fusione in mercurial?

hg revert non fa ciò che mi piacerebbe, ripristina solo il testo dei file. Mercurial interrompe il mio secondo tentativo di fusione e si lamenta che l'unione originale non è ancora stata accettata.

C'è un modo per annullare un'unione dopo un comando hg merge ma prima che venga eseguito il commit?

+0

Eventuali duplicati di [Come abbandonare un merge hg?] (Http://stackoverflow.com/questions/2570087/how-to-abandon-a-hg-merge) – Rodrigue

risposta

86

hg update -C <one of the two merge changesets>

+0

Semplice, efficiente e, mi pensa, il modo migliore per farlo! : D –

+37

Un altro modo è semplicemente 'hg update --clean .' –

+1

da non confondere con -c (in minuscolo)! – SystemParadox

35

Dopo aver fatto hg merge, ma prima hg commit, la copia di lavoro ha due genitori: il primo genitore è il changeset che aveva aggiornato a prima della fusione e il secondo genitore è l'insieme di modifiche che si sta fondendo con. Mercurial non ti lascerà fare hg merge finché la tua copia di lavoro avrà due genitori.

Hai due opzioni su come procedere:

  1. Se si vuole interrompere l'unione e tornare al punto di partenza, poi fare

    hg update -C . 
    

    Questo aggiornerà la copia di lavoro per abbinare il primo genitore: il . indica sempre il primo genitore della copia di lavoro.

  2. Se si vuole ri-unire alcuni file quindi fare

    hg resolve fileA fileB 
    

    Ciò rilanciare gli strumenti di unione proprio come quando hai fatto hg merge. Il comando di risoluzione è buono se si trova a hg merge -time che gli strumenti di unione sono configurati in modo errato: correggere la configurazione ed eseguire hg resolve --all. È possibile eseguire hg resolve tutte le volte che si desidera finché non si è soddisfatti dell'operazione di unione.