作業ディレクトリからすべての未追跡ファイルを削除することはできますか?作業ディレクトリに多数のファイルを追加し、「hg add」を介してそれらを追加せず、それらの新しいファイルを完全に削除したいとします。
PowerShellを使用していますが、Windowsを使用しているため、ここで組み合わせたソリューションも可能です。
purgeというMercurial Extensionを追加します。 Mercurialによって配布されます。
この拡張機能は、「パージ」コマンドを「hg」に追加して、Mercurialに認識されていないファイルを削除します。つまり、追跡されていないファイル。あなたの命令は
hg purge
追加するのを忘れたファイルを誤って削除しないようにするため、デフォルトでは有効になっていません。
この拡張機能をインストールするには、これをMercurial設定ファイル(Unixでは.hgrc、WindowsではMercurial.ini)に追加します
[extensions]
purge =
この拡張機能を一時的に有効にするには、次を使用できます
hg purge --config extensions.purge=
パージなしの適切な方法は次のとおりです。
hg st -un0 | xargs -0 rm
ありがとう!これはPowershellでもうまくいきました:
hg st -un | rm
以下を試してください:
hg st -un | xargs rm
rm $(hg st -u)
...ここで、-uは「untracked」の略で、別の状態を選択することもできます。
これでうまくいくはずです:
hg status | grep '^\?' | sed 's/^\? //' | xargs rm -rf
パージを使用したくない場合:
rm $(hg st | grep ^? | awk '{print $2}')
使用できます
hg purge --all
無視され追跡されていないファイルをすべて削除する
(最初にいくつかの回答で説明されているようにパージ拡張機能をインストールする必要があります)
* nixシステムを使用していると仮定すると、次のようなものを実行できます。
rm `hg st | awk '/\?/ {print $2}'`
mercurialリポジトリのルートから。
同じことを達成するための標準的なMercurialコマンドについては知りませんが、これを行うためのコマンドラインオプションは他にもたくさんあると思います。 「より良い」解決策があると確信しており、他の提案を聞きたいと思います。
このコマンドは十分にテストされていないため、注意して使用してください。