hg forgetとhg removeの違いは何ですか?


313

Mercurialがリポジトリの現在の状態からいくつかのファイルを削除するようにしたい。ただし、ファイルを以前の履歴に残しておく必要があります。

どのようforgetremove違いますか、そして私がやりたいことはできますか?


27
Mercurialの以前の履歴からファイルを削除することはできません。拡張機能の使用を開始しない限り、履歴は通常不変です。
マーティンガイスラー、

回答:


348

hg forget」は「」の省略形ですhg remove -Af。' hg remove'ヘルプから:

...および-Afを使用すると、作業ディレクトリからファイルを削除せずに、次のリビジョンからファイルを削除できます。

結論: ' remove'はディスク上の作業コピーからファイルを削除し(を使用しない場合-Af)、 ' forget'は削除しません。


7
「hg forget」は、「hg remove -Af」を実行する簡単な方法としてMercurial 1.3で再導入されました。作業コピーから削除せずにファイルを削除するようにスケジュールします。
マーティンガイスラー、

5
それを聞いてうれしい。'remove -Af'(および 'remove'ヘルプページのオプションテーブル全体)は狂気でした。
Ry4an Brase 2009

32
@ Ry4an:真剣に、それはとんでもないことでした。「忘れる」を再導入したパッチを寄稿しました。私がそれを作っているときに、-Afはコードで完全に理にかなっていることに気付きましたが、ユーザーの観点からはそれは完全にばかげています。
スティーブロス

10
へー、それが水銀のすごいところです-人々はユーザーの視点から何が理にかなっているのかについて積極的かつ反復的に考えています。修正してくれてありがとう。
Ry4an Brase 2009

9
ローカルビルド構成ファイルなど?システムごとに異なるローカルツールへのパス?ソース管理には不要だが、保存したいログファイルを誤って追加しましたか?私はそれが起こると思います。
Ry4an Brase

42

置くために最良の方法はそれでhg forgetあり、同一するhg remove 除く外、それはで後ろにファイルを残していること、あなたの作業コピー。ファイルは追跡されないファイルとして残され、オプションでのパターンで無視できるようになりました.hgignore

言い換えれば、私が言うことができないあなたが使用している場合hg forgethg remove、私はあなたから引くとき。あなたが実行されたことをファイルhg forgetにはなりますが、使用した場合と同じように-私はそのチェンジに更新する場合に削除することhg removeの代わりに。


27

ドキュメントから、明らかにどちらのコマンドを使用しても、ファイルをプロジェクト履歴に保持できます。作業ディレクトリからもファイルを削除するため、削除したいようです。

Mercurialの本http://hgbook.red-bean.com/read/から

ファイルを削除しても、その履歴には影響しません。ファイルを削除しても、影響が2つしかないことを理解することが重要です。ファイルの現在のバージョンを作業ディレクトリから削除します。Mercurialが次のコミット時からファイルへの変更を追跡するのを停止します。ファイルを削除しても、ファイルの履歴は変更されません。

manページのhg(1)は、これについて忘れていると言っています:

指定したファイルにマークを付けて、次のコミット後に追跡されないようにします。これは、プロジェクト履歴全体からではなく、現在のブランチからのみファイルを削除し、作業ディレクトリからは削除しません。

そしてこれは削除について:

示されたファイルをリポジトリから削除するようにスケジュールします。これにより、プロジェクト履歴全体からではなく、現在のブランチからのみファイルが削除されます。


3

"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 remove7種類のステータスのファイルに対して使用する例があります。


2

ファイルは追跡可能かどうかにかかわらず、hg addを使用してファイルを追跡し、hg removeまたはhg forgetを使用して追跡を解除します 。使用HG削除をフラグなしでファイルを削除し、それをアン追跡する両方、HGは忘れることは単にそれを削除せずに、それをアン追跡します。


3
その男自身がすでに口笛を吹いているときに、なぜあなたがこの引用を追加する必要性を感じたのかは分かりませんが、ねえ、あなたのボートが浮いているものは何でも。
Nathan Tuggy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.