私はMercurialが初めてです。正しいコマンドが見つかりません。運のないアップデート/チェックアウトを試みました。ローカルリポジトリを使用しています。ありがとう
hg revert -r<rev> <file>
(これにより、そのファイルは指定されたリビジョンのままになります)。
Djcが言ったように、revert
は以前のリビジョンと一致するようにファイルを変更します。所定の場所に配置したくない場合は、hg cat -r revisionid filename
(もちろんrevisionidとfilenameを使用)を使用して、ファイルをstdoutに出力し、任意の場所にリダイレクトするのに適しています。
hg revert
は実際にこの問題を解決します。しかし、あなたは単にあなたの質問への答えよりも幅広いことについて混乱していると思い、より完全に答えようとすることを望みます。
hg update
はリポジトリ全体のコマンドであり、個々のファイルでは機能しません。この点でSubversion svn update
とは異なります。 hg --help update
を実行すると、コマンドがファイル引数を受け取らないため、これが当てはまることがわかります。リポジトリ全体を特定のスナップショットに移動するために使用できますが、1つのファイルだけに移動することはできません。
hg --help
と入力すると、コマンドのリストが表示されます。これはかなり大きく、やや手ごわいリストですが、これを読み通せば、次の行が見つかります。
revert restore individual files or directories to an earlier state
さて、比較のために最後の状態だけが必要な場合、興味のある別のコマンドがあります。それはhg cat
です。これにより、特定のリビジョンでファイルの内容を印刷できます。その後、その出力を他のファイルにリダイレクトできます。その後、ファイルの以前の既知の良好なバージョンと古いバージョンを並べて比較することができます。
Mercurialに別のupdate
コマンドがあるのは、Subversionでは不可能なことをMercurialで実行できるからです。以前のバージョンにupdate
、変更を加えてからコミットできます。これにより、ブランチが作成されます。 update
コマンドには、現在の作業ディレクトリの親リビジョンも変更するだけでなく、そのディレクトリ内のすべてのファイルの内容をその親リビジョンのバージョンに変更する効果があります。
つまり、revert
はファイル(またはコマンドに正しい引数を指定した場合はリポジトリ全体)の内容を変更しますが、現在の作業コピーの親リビジョンは同じままにします。
hg parents
コマンドを使用して、現在の作業コピーの親リビジョン(またはマージの場合はリビジョン)を見つけることができます。
Subversionのリビジョンは厳密に直線的な進行です。 Mercurialは、一瞬でブランチを作成します。それらはマージするのとほぼ同じくらい簡単です。リビジョンは、厳密に直線的な進行ではなく、DAGを形成します。
特定のファイルの特定のリビジョンを抽出するには、Windowsでこれを実行できます。
hg cat "<FileToBeExtractedPath>" -r 9 > "<ExtractionPath>"
ここで、9はリビジョン番号です。
またはさらに良い:
hg cat "<FileToBeExtractedPath>" -r 9 -o "<ExtractionPath>"
以前のバージョンを取得しようとしてここに来たので、正確なコマンドは次のとおりです。
hg revert -r .~1 <file>