No Git, eu posso fazer isso:
1. Comece a trabalhar no novo recurso: $ git co -b newfeature-123 # (uma ramificação local de desenvolvimento de recursos) faça algumas confirmações (M, N, O) mestre A --- B --- C \ novidade-123 M --- N --- O 2. Puxe novas alterações do mestre upstream: $ git pull (mestre atualizado com ff-commits) mestre A --- B --- C --- D --- E --- F \ novidade-123 M --- N --- O 3. Rebase off master para que meu novo recurso pode ser desenvolvido com relação às alterações upstream mais recentes: (from newfeature-123) $ git rebase master mestre A --- B --- C --- D --- E --- F \ novidade-123 M --- N --- O
Quero saber como fazer a mesma coisa no Mercurial, e procurei na Web por uma resposta, mas o melhor que pude encontrar foi: git rebase - pode hg fazer isso
Esse link fornece 2 exemplos:
1. Admito que isso: (substituindo as revisões do exemplo por aquelas do meu próprio exemplo)
hg up -CF hg branch -f newfeature-123 hg transplant -a -b newfeature-123
não é tão ruim, exceto que ele deixa para trás o MNO pré-rebase como um cabeçote imerso e cria três novos commits M ', N', O 'que os representam ramificando a linha principal atualizada.
Basicamente, o problema é que eu acabo com isso:
mestre A --- B --- C --- D --- E --- F \ \ novidade-123 \ M '--- N' --- O ' \ novidade-123 M --- N --- O
isso não é bom porque deixa para trás compromissos locais indesejados que devem ser descartados.
- A outra opção do mesmo link é
hg qimport -r M: O hg qpop -a hg up F hg branch newfeature-123 hg qpush -a hg qdel -r qbase: qtip
e isso resulta no gráfico desejado:
mestre A --- B --- C --- D --- E --- F \ novidade-123 M --- N --- O
mas esses comandos (todos os 6!) parecem muito mais complicados do que
$ git rebase master
Quero saber se este é o único equivalente em Hg ou se existe alguma outra maneira disponível que seja simples como o Git.
git reflog
e eles não desaparecerão totalmente até que sejam coletados o lixo. Se você quiser mantê-los em um ramo nomeado para não precisar usar o reflog, faça-ogit branch feature-123_original
antes de fazer o novo rebote .