web-dev-qa-db-ja.com

すべて破棄して、最新リビジョンのクリーンコピーを取得しますか?

Mercurialを使用するためにビルドプロセスを移動し、作業ディレクトリをtipリビジョンの状態に戻したいと考えています。ビルドプロセスの以前の実行では、いくつかのファイルが変更され、コミットしたくないファイルが追加されたため、ローカルの変更とリポジトリに追加されていないファイルがあります。

すべてを破棄し、最新のリビジョンを持つクリーンな作業ディレクトリを取得する最も簡単な方法は何ですか?

現在、私はこれをやっています:

hg revert --all
<build command here to delete the contents of the working directory, except the .hg folder.>
hg pull
hg update -r MY_BRANCH

しかし、もっと簡単な方法があるはずです。

リポジトリを削除し、新しいクローンを作成し、更新するのと同じことをしたいと思います。しかし、レポは大きすぎて十分に高速ではありません。

153
Rory

これらのステップshouldを短くすることができます:

hg pull
hg update -r MY_BRANCH -C

-Cフラグは、更新する前にすべてのローカル変更を破棄するように更新コマンドに指示します。

ただし、これにより、リポジトリに追跡されていないファイルが残る場合があります。あなたもそれらを取り除きたいようですので、私はそのためにpurge拡張を使用します:

hg pull
hg update -r MY_BRANCH -C
hg purge

いずれにしても、Mercurialに実行を要求できるコマンドは1つもありません。ただし、実行できないと言う「フルクローン」メソッドにプロセスを変更する場合を除きます。

hg up -C

これにより、すべての変更が削除され、現在のブランチの最新のヘッドに更新されます。

また、 purge extension を有効にすると、バージョン管理されていないファイルもすべて削除できます。

106
zerkms

パージ拡張機能なしで* nixで追跡されていないものを削除するには、使用できます

hg pull
hg update -r MY_BRANCH -C
hg status -un|xargs rm

どちらを使用しています

update -r --rev REVリビジョン

update -C --cleanコミットされていない変更を破棄(バックアップなし)

status -u --unknown不明な(追跡されない)ファイルのみを表示します

status -n --no-statusステータスプレフィックスを非表示

10
KCD

hg statusはすべての新しいファイルを表示します。そして、あなたはただrmすることができます。

通常、無視され、バージョン管理されていないファイルを削除したいので:

hg status -iu                          # to show 
hg status -iun0 | xargs -r0 rm         # to destroy

そして、それに従ってください:

hg update -C -r xxxxx

これにより、すべてのバージョン管理されたファイルがリビジョンxxxxの正しい状態になります。


あなたがこれをしたくないと言うスタックオーバーフローの伝統に従うために、私はこの「核オプション」が私が気にするものを破壊したことをしばしば見つけます。

それを行う正しい方法は、ビルドプロセスで「make clean」オプションを使用することです。また、「make reallyclean」と「make distclean」オプションを使用することもできます。

easyであるメソッドを探しているなら、これを試してみてください。

私は自分のすべてのツールのコマンドラインをほとんど覚えていないので、UIを使用してそれを行う傾向があります。


1。まず、「コミット」を選択します

Commit

2。次に、無視されたファイルを表示します。コミットされていない変更がある場合は、それらを非表示にします。

Show ignored files

3。今、それらのすべてを選択し、「バージョン管理外の削除」をクリックします。

Delete them

できたこれは、コマンドラインのものよりも覚えやすい手順です。

3
bytecode77