Eu errei uma fusão. Eu gostaria de reverter e tentar novamente.
Existe uma maneira de reverter uma mesclagem antes de ser confirmada?
hg revert
não faz o que eu gostaria, só reverte o texto dos arquivos. O Mercurial aborta minha segunda tentativa de mesclar e reclama que a mesclagem original ainda não foi confirmada.
Existe uma maneira de desfazer uma mesclagem após um hg merge
comando, mas antes de ser confirmado?
Respostas:
hg update -C <one of the two merge changesets>
fonte
--clean
é sinônimo de-C
. Não tenho certeza de qual conjunto de alterações.
se refere, mas sempre será um dos dois conjuntos de alterações mesclados..
deve limpar a revisão em que você estava antes de iniciar a mesclagem. Portanto, se você estivesse em r42, tentasse fundir-se com r43, falhasse, limpasse, você estaria de volta em um r42 puro.hg update --clean
funciona, pois.
parece ser o padrão implícito - embora não seja explicitamente documentado ..
no contexto de uma fusão é bastante ambíguo.Depois de fazer
hg merge
, mas anteshg commit
, sua cópia de trabalho terá dois pais: o primeiro pai é o changeset que você atualizou antes da fusão e o segundo pai é o changeset com o qual você está mesclando. O Mercurial não permitirá que você o façahg merge
novamente, desde que sua cópia de trabalho tenha dois pais.Você tem duas opções de como proceder:
Se você quiser abortar a mesclagem e voltar ao ponto de partida, faça
Isto irá atualizar a cópia de trabalho para corresponder ao primeiro pai: o
.
sempre denota o primeiro pai da cópia de trabalho.Se você quiser fundir novamente alguns arquivos, faça
Isso irá reiniciar as ferramentas de mesclagem, exatamente como você fez
hg merge
. O comando resolve é bom se você descobrir nahg merge
hora que suas ferramentas de mesclagem estão mal configuradas: corrija a configuração e executehg resolve --all
. Você pode executarhg resolve
quantas vezes quiser até ficar satisfeito com a mesclagem.fonte