2013-04-05 13 views
16

Sono consapevole Mercurial for Beginners: The Definitive Practical Guide e risposte come Mercurial merge branches? (abort: push creates new remote branches)Per annullare "abortire: spinta crea nuove teste remote sul ramo" in Mercurial

Qui ho inavvertitamente creato una situazione in cui Mercurial vuole creare una nuova testa a distanza. Qual è il modo migliore per annullare questo e lasciare traccia minima o nulla di questo errore sul lato remoto?

###> hg push 
pushing to http://example.com 
searching for changes 
abort: push creates new remote heads on branch 'default'! 
(did you forget to merge? use push -f to force) 

###> hg revert --all -r tip 

###> hg update -C 
0 files updated, 0 files merged, 0 files removed, 0 files unresolved 

###> hg incoming 
comparing with http://example.com 
searching for changes 
no changes found 

###> hg summary 
parent: 488:e3db024fe901 tip 
Misc. 
branch: default 
commit: (clean) 
update: 6 new changesets, 2 branch heads (merge) 

###> hg pull 
pulling from http://example.com 
searching for changes 
no changes found 

###> hg glog 
@ changeset: 488:e3db024fe901 
| tag:   tip 
| summary:  Misc. 
| 
o changeset: 487:b207579b9d41 
| parent:  480:ce775708800c 
| summary:  Misc. 
| 
| o changeset: 486:59a7a5b34c7f 
| | user:  other 
| | summary:  fixes 
| | 
| o changeset: 485:b28264333e18 
| | user:  other 
| | summary:  binary 

Se mi fondo, è una sorta di sembra ok:

hg merge 
abort: outstanding uncommitted merges 

Ma hg diff mostra tutti i tipi di modifiche non ce l'ho fatta. Sono disposto a ri-applicare le mie modifiche ... come posso riportare tutto a un unico consiglio, abbandonando tutte le modifiche locali?

+0

ciò che fa di uscita in uscita hg? – Tom

risposta

10

Sembra che quando hai fatto un hg merge, non si è commesso l'insieme di modifiche risultante.

Quando si fondono in un altro ramo (nel tuo caso potrebbe essere necessario specificare hg merge 486 per unire nelle altre modifiche degli utenti), esso unisce il ramo nella directory di lavoro. È quindi necessario verificare che tutti i conflitti siano risolti (se ce ne sono) utilizzando uno strumento di unione, o modificando manualmente il file (e quindi eseguire hg resolve ogni tipo di conflitto). Una volta fatto questo è necessario hg commit vostro nuovo, changeset unito.

Questo spiegherebbe perché hg diff ti dà molte modifiche che non hai apportato - sono le modifiche apportate sull'altro ramo, che devi ancora eseguire il commit. Se si esegue hg summary o hg parents nella vostra directory di lavoro, si dovrebbe vedere due genitori elencati: 486 e 488. Si dovrebbe hg commit questa directory di lavoro, la creazione di una nuova fusione 489.

Se si desidera annullare l'unione corrente e ricominciare, è corretto tentare di eseguire hg update -C, che imposterà la directory di lavoro allo stato originale (non interposto).

Se si vuole sbarazzarsi di le modifiche (487 e 488 - dichiarate non vi occupate di riapplicare le modifiche), l'opzione più semplice senza ricorrere a estensioni è semplicemente quello di ri-clonare il repository e continua il tuo lavoro da lì.

7

per sbarazzarsi di modifiche (ex 487 e 488): Se ti senti (come faccio io) che ri-clonazione del repository, come descritto prima e anche officially recommended here è ridicolo, allora si dovrebbe ottenere MqExtension

Una volta Mq è abilitato, è possibile rimuovere facilmente le modifiche non si vuole:

hg strip 487 
hg strip 488 
+0

Il link ufficialmente raccomandato è morto. –

+1

link aggiornati al nuovo sito di documentazione mercuriale –

2

non ho fatto unire, ma improvvisamente che visualizzo il messaggio op ha pubblicato. Quando faccio un hg pull, nella riga di comando mostra abort! Repository default non trovato.

Problemi correlati