コマンドのチートシートは次のとおりです。
hg update
作業コピーの親リビジョンを変更し、ファイルの内容もこの新しい親リビジョンに一致するように変更します。これは、更新先のリビジョンから新しいコミットが引き継がれることを意味します。
hg revert
ファイルの内容のみを変更し、作業コピーの親リビジョンはそのままにします。通常hg revert
、作業コピー内のファイルに対して行ったコミットされていない変更を保持したくない場合に使用します。
hg branch
新しい名前付きブランチを開始します。名前付きブランチは、変更セットに割り当てるラベルと考えてください。そうすればhg branch red
、次のチェンジセットは「赤い」ブランチに属するものとしてマークされます。これは、チェンジセットを整理するのに便利な方法です。特に、さまざまな人がさまざまなブランチで作業していて、後でチェンジセットの作成元を確認したい場合に便利です。しかし、あなたの状況ではそれを使用したくありません。
を使用するhg update --rev 38
と、変更セット 39 ~ 45 が行き止まり (いわゆるぶら下がった頭) として残されます。プッシュ先のリポジトリに「複数のヘッド」を作成するため、プッシュすると警告が表示されます。誰かがマージを行う必要があることを示唆しているため、そのような頭を残すのは一種の無礼であるため、警告があります。しかし、あなたの場合は、先に進むことができhg push --force
ます。本当にそれをぶら下げたままにしたいからです。
リビジョン 39-45 をまだどこかにプッシュしていない場合は、それらを非公開にしておくことができます。それは非常に簡単です:hg clone --rev 38 foo foo-38
リビジョン 38 までしか含まない新しいローカル クローンを取得します。作業を続けて、foo-38
作成した新しい (良い) 変更セットをプッシュできます。foo
クローンには古い (悪い) リビジョンがまだ残っています。(クローンの名前は自由に変更できます。たとえば、foo
tofoo-bad
やfoo-38
tofoo
など)。
最後に、使用hg revert --all --rev 38
してコミットすることもできます。これにより、リビジョン 38 と同じように見えるリビジョン 46 が作成されます。その後、リビジョン 46 から作業を続行します。これにより、履歴に分岐が作成されたのと同じ明示的な方法で作成されるhg update
ことはありませんが、一方で、複数の頭。hg revert
リビジョン 45 に基づいて既に独自の作業を行っている他のユーザーと共同作業を行う場合に使用します。それ以外の場合hg update
は、より明示的です。