web-dev-qa-db-ja.com

Mercurialの作業ディレクトリからすべての未追跡ファイルを削除するにはどうすればよいですか?

作業ディレクトリからすべての未追跡ファイルを削除することはできますか?作業ディレクトリに多数のファイルを追加し、「hg add」を介してそれらを追加せず、それらの新しいファイルを完全に削除したいとします。

PowerShellを使用していますが、Windowsを使用しているため、ここで組み合わせたソリューションも可能です。

198
Valentin

purgeというMercurial Extensionを追加します。 Mercurialによって配布されます。

この拡張機能は、「パージ」コマンドを「hg」に追加して、Mercurialに認識されていないファイルを削除します。つまり、追跡されていないファイル。あなたの命令は

hg purge

追加するのを忘れたファイルを誤って削除しないようにするため、デフォルトでは有効になっていません。

この拡張機能をインストールするには、これをMercurial設定ファイル(Unixでは.hgrc、WindowsではMercurial.ini)に追加します

[extensions]
purge = 

この拡張機能を一時的に有効にするには、次を使用できます

hg purge --config extensions.purge= 
272
simplyharsh

パージなしの適切な方法は次のとおりです。

hg st -un0 | xargs -0 rm
116
tonfa

ありがとう!これはPowershellでもうまくいきました:

hg st -un | rm
15

以下を試してください:

hg st -un | xargs rm
3
Alexei Tenitski
rm $(hg st -u)

...ここで、-uは「untracked」の略で、別の状態を選択することもできます。

3
Alex

これでうまくいくはずです:

hg status | grep '^\?' | sed 's/^\? //' | xargs rm -rf
2
Kristian

パージを使用したくない場合:

rm $(hg st | grep ^? | awk '{print $2}')
2
Lev

使用できます

hg purge --all

無視され追跡されていないファイルをすべて削除する

(最初にいくつかの回答で説明されているようにパージ拡張機能をインストールする必要があります)

2
Alex L

* nixシステムを使用していると仮定すると、次のようなものを実行できます。

rm `hg st | awk '/\?/ {print $2}'`

mercurialリポジトリのルートから。

同じことを達成するための標準的なMercurialコマンドについては知りませんが、これを行うためのコマンドラインオプションは他にもたくさんあると思います。 「より良い」解決策があると確信しており、他の提案を聞きたいと思います。

このコマンドは十分にテストされていないため、注意して使用してください。

0
Heinrich Filter