Aqui está a folha de dicas sobre os comandos:
hg updatealtera sua revisão pai da cópia de trabalho e também altera o conteúdo do arquivo para corresponder a essa nova revisão pai. Isso significa que novas confirmações continuarão com a revisão para a qual você atualiza.
hg revertaltera apenas o conteúdo do arquivo e deixa a revisão pai da cópia de trabalho em paz. Você geralmente usa hg revertquando decide que não deseja manter as alterações não feitas que você fez em um arquivo em sua cópia de trabalho.
hg branchinicia uma nova ramificação nomeada. Pense em uma ramificação nomeada como um rótulo que você atribui aos conjuntos de alterações. Portanto, se o fizer hg branch red, os seguintes conjuntos de alterações serão marcados como pertencentes ao ramo "vermelho". Essa pode ser uma boa maneira de organizar conjuntos de mudanças, especialmente quando pessoas diferentes trabalham em ramificações diferentes e você deseja ver mais tarde de onde se originou um conjunto de mudanças. Mas você não quer usá-lo na sua situação.
Se você usar hg update --rev 38, os conjuntos de alterações 39 a 45 serão deixados como um beco sem saída - uma cabeça pendente como a chamamos. Você receberá um aviso ao pressionar, pois estará criando "várias cabeças" no repositório para o qual você pressiona. O aviso está lá, já que é meio indelicado deixar essas cabeças por aí, pois sugerem que alguém precisa fazer uma fusão. Mas no seu caso, você pode simplesmente seguir em frente e hg push --forcejá que realmente deseja deixá-lo em espera.
Se você ainda não colocou a revisão 39-45 em outro lugar, mantenha-a em sigilo. É muito simples: hg clone --rev 38 foo foo-38você receberá um novo clone local que contém apenas a revisão 38. Você pode continuar trabalhando foo-38e enviar os novos (bons) conjuntos de alterações criados. Você ainda terá as revisões antigas (ruins) no seu fooclone. (Você é livre para renomear os clones da maneira que desejar, por exemplo, foopara foo-bade foo-38para foo.)
Por fim, você também pode usar hg revert --all --rev 38e confirmar. Isso criará uma revisão 46 que parece idêntica à revisão 38. Você continuará trabalhando a partir da revisão 46. Isso não criará uma bifurcação no histórico da mesma maneira explícita que hg updatefez, mas, por outro lado, você não se queixará de ter cabeças múltiplas. Eu usaria hg revertse estivesse colaborando com outras pessoas que já fizeram seu próprio trabalho com base na revisão 45. Caso contrário, hg updateé mais explícito.