回答:
「hg forget
」は「」の省略形ですhg remove -Af
。' hg remove
'ヘルプから:
...および-Afを使用すると、作業ディレクトリからファイルを削除せずに、次のリビジョンからファイルを削除できます。
結論: ' remove
'はディスク上の作業コピーからファイルを削除し(を使用しない場合-Af
)、 ' forget
'は削除しません。
置くために最良の方法はそれでhg forget
あり、同一するhg remove
除く外、それはで後ろにファイルを残していること、あなたの作業コピー。ファイルは追跡されないファイルとして残され、オプションでのパターンで無視できるようになりました.hgignore
。
言い換えれば、私が言うことができないあなたが使用している場合hg forget
かhg remove
、私はあなたから引くとき。あなたが実行されたことをファイルhg forget
にはなりますが、使用した場合と同じように-私はそのチェンジに更新する場合に削除することhg remove
の代わりに。
ドキュメントから、明らかにどちらのコマンドを使用しても、ファイルをプロジェクト履歴に保持できます。作業ディレクトリからもファイルを削除するため、削除したいようです。
Mercurialの本http://hgbook.red-bean.com/read/から:
ファイルを削除しても、その履歴には影響しません。ファイルを削除しても、影響が2つしかないことを理解することが重要です。ファイルの現在のバージョンを作業ディレクトリから削除します。Mercurialが次のコミット時からファイルへの変更を追跡するのを停止します。ファイルを削除しても、ファイルの履歴は変更されません。
manページのhg(1)は、これについて忘れていると言っています:
指定したファイルにマークを付けて、次のコミット後に追跡されないようにします。これは、プロジェクト履歴全体からではなく、現在のブランチからのみファイルを削除し、作業ディレクトリからは削除しません。
そしてこれは削除について:
示されたファイルをリポジトリから削除するようにスケジュールします。これにより、プロジェクト履歴全体からではなく、現在のブランチからのみファイルが削除されます。
"hg remove b"
「A」ステータスのファイルに対して使用すると、つまり追加されたがコミットされていない場合、Mercurialは応答します。
not removing b: file has been marked for add (use forget to undo)
この応答は、removeとforgetの違いを非常に明確に説明しています。
私の理解では、"hg forget"
バージョン管理によって追跡されないように、追加されたがコミットされていないファイルを元に戻すためのものです。一方"hg remove"
、バージョン管理からコミットされたファイルを取り出すためのものです。
このスレッドには、hg remove
7種類のステータスのファイルに対して使用する例があります。
ファイルは追跡可能かどうかにかかわらず、hg addを使用してファイルを追跡し、hg removeまたはhg forgetを使用して追跡を解除します 。使用HG削除をフラグなしでファイルを削除し、それをアン追跡する両方、HGは忘れることは単にそれを削除せずに、それをアン追跡します。