166

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

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

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

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

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

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

4

5 に答える 5

220

これらの手順は、次のように短縮できるはずです。

hg pull
hg update -r MY_BRANCH -C

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

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

hg pull
hg update -r MY_BRANCH -C
hg purge

いずれにせよ、Mercurial に実行を依頼できる単一のコマンドはありません。ただし、プロセスを「完全なクローン」メソッドに変更する場合を除きます。

于 2011-02-10T13:42:00.970 に答える
119
hg up -C

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

また、パージ拡張機能をオンにして、バージョン管理されていないファイルもすべて削除できます。

于 2011-02-10T13:39:07.617 に答える
11

パージ拡張機能を使用せずに* 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 ステータス接頭辞を隠す

于 2014-09-17T03:02:24.340 に答える
3

簡単な方法を探しているなら、これを試してみてください。

私自身、すべてのツールのコマンドラインを思い出すことはほとんどできないため、UI を使用して行う傾向があります。


1.まず「コミット」を選択

専念

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

無視されたファイルを表示

3. 次に、それらをすべて選択し、[バージョン管理外の削除] をクリックします。

それらを削除します

終わり。コマンドラインよりもはるかに覚えやすい手順です。

于 2015-09-12T01:32:22.303 に答える
3

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」も使用します。

于 2017-02-27T16:53:53.170 に答える