web-dev-qa-db-ja.com

Mercurialでの元に戻すと更新の違い

Mercurialを使い始めたばかりですが、理解できないことがあります。

複数のファイルに変更を加えましたが、そのうちの1つに加えたすべての変更を元に戻したいと思います(つまり、1つの特定のファイルに対する最後のコミットに戻ります)。

私が見る限り、私が欲しいコマンドは revert です。

私がリンクしたページには、次のステートメントがあります。

ただし、この操作では、作業ディレクトリの親リビジョン(またはコミットされていないマージの場合はリビジョン)は変更されません。コミットされていないマージを元に戻すには、「hg update-C-r」を使用できます。これにより、親が最初の親にリセットされます。

2つの違いがわかりません(hg reverthg update -C -r)。誰かが違いについて私に教えてもらえますか?そして私の場合、ファイルに加えた変更を元に戻すか更新して削除する必要がありますか?

53
Edan Maor

最初の違いは、元に戻すことは作業コピーのサブセットで機能し、更新は作業コピー全体で機能することです。もう1つの違いは、最後にコミットされたバージョン以外のバージョンに戻りたいときに何が起こるかです。

リビジョンがある場合(大文字がコミットされ、小文字は作業コピーの変更であり、親リビジョンはCです)

A-B-C-d

update -C -r Bあなたに与える

A-B-C

作業コピーをBに設定すると、変更を加えるとBから分岐します(親リビジョンはBに設定されます)

A-B-C
  \e

revert -r Bあなたに与える

A-B-C-b'

ここで、b 'は、コミットされた中間の変更のすべてを元に戻す一連の変更です。この場合、すべてのCを元に戻します。変更はすべてb'セットに参加するだけです(親リビジョンはCで変更されません)。

65
jk.