Mercurialの設計には、ステージング領域の概念が含まれていません。つまり、ローカル変更とコミットの間に中間状態はありません。
あなたが言及した各概念の概要は次のとおりです。
hg graft
と同等ですgit cherry-pick
。あるブランチから別のブランチにコミットをコピーします。この機能の一般的な使用例は、あるリリースブランチから別のリリースブランチにバグ修正をコピーすることです。このコマンドは、古い(現在は廃止された)hg transplant
拡張機能を置き換えます。
hg record
とhg qrecord
に似ていgit add --patch
ます。コミットするハンクをインタラクティブに選択できます。したがって、1つのファイルの複数の異なる領域を変更した場合、実際にコミットする領域(つまり、ハンク)と、ローカル変更として残す領域を選択できます。
qrecord
有効にしている場合にのみ使用できますmq
。mq
標準のコミットではなく、パッチにコミットします。
hg shelve
に似ていgit stash
ます。それはあなたがあなたのファイル(またはファイルの塊)へのローカルな変更を一時的に取っておくことを可能にします。これらの変更は、unshelved
準備ができたときに行うことができます。
dirstate
Mercurialソースコードの内部クラスです。ユーザーには公開されません。
Mercurial Queues
(としても知られていmq
ます)は、おそらくMercurialのステージングエリアに最も近い場所です。Mercurialwikiの説明は次のとおりです。
変更は、Mercurialにコミットされるパッチとして維持されます。コミットは削除または並べ替えることができ、作業ディレクトリで行われた変更に基づいて、基になるパッチを更新できます。パッチディレクトリはリビジョン管理下に置くこともできるので、パッチに加えられた変更の個別の履歴を持つことができます。
mq
ローカルでテストしているが、パブリックな場所にプッシュしていないコミットを洗練/再加工するためによく使用されます。一部の人々はまた、サードパーティのコードへの一連の変更を維持するためにそれを使用します。