1

私はちょうど走った:

hg add .*

これはすべてのファイルに一致し、../something私が絶対に望んでいないものでした! このコマンドを元に戻す最も簡単な方法は何ですか?

4

3 に答える 3

3

正確には私が求めていたものではありませんが、私の人生を楽にしてくれました:

hg forget "set:added()"

これにより、作業リポジトリに追加されたすべてのファイルのマークが解除されます。明らかに、前のコマンドで追加されたすべてのファイルのマークも外したので、言ったように、これはまさに私が求めていたものではありません...

于 2012-11-23T15:21:39.377 に答える
2

やり直したいとは思わないコミットされていない追加がたくさんある場合は、親ディレクトリのサブディレクトリにある保留中の追加のみを選択する Mercurial ファイルセットを使用できます(これは、誤った追加が存在する同じディレクトリで使用します)。コマンドが発行されました):

hg forget "set:../** and added()"

Mercurial は、ファイルを参照するために使用したパスを覚えていないため、追加されたばかりのすべてのファイル (親ディレクトリの下) を忘れてしまいます。ただし、大規模なリポジトリの奥深くにいる場合は、破棄する範囲が制限されます。

あなたの質問はこの最近の質問に似ていますが、ここでは、誤って追加されたファイル名について追加の条件があります。

于 2012-11-24T22:03:49.060 に答える
1

hg addコマンドを元に戻す組み込みの方法はありません。

根本的な問題は、hg addいわゆる "dirstate" ("working directory state" の略) を操作していることです。これは、コミット予定のファイルなどの保留中の変更が保存される場所であり、このストレージはバージョン管理されていません。

ただし、役立つ拡張機能があります。hg-multiundoは、Mercurial が使用するすべてのファイル (dirstate を含む) のバックアップを作成します。hg addこれは、や などを元に戻すために使用できることを意味しますhg revert --no-backup

于 2012-11-23T17:26:32.463 に答える