Aqui está a folha de dicas sobre os comandos:
hg update
altera 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 revert
altera apenas o conteúdo do arquivo e deixa a revisão pai da cópia de trabalho em paz. Você geralmente usa hg revert
quando 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 branch
inicia 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 --force
já 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-38
você receberá um novo clone local que contém apenas a revisão 38. Você pode continuar trabalhando foo-38
e enviar os novos (bons) conjuntos de alterações criados. Você ainda terá as revisões antigas (ruins) no seu foo
clone. (Você é livre para renomear os clones da maneira que desejar, por exemplo, foo
para foo-bad
e foo-38
para foo
.)
Por fim, você também pode usar hg revert --all --rev 38
e 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 update
fez, mas, por outro lado, você não se queixará de ter cabeças múltiplas. Eu usaria hg revert
se 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.