2011-12-19 13 views
7

私の最後のコミットの後、私はたくさんのコードを書いた。再びコミットする前に、私はhg addを実行しました。 それは私が興味はなかったいくつかのファイルを追加しましたので、私はすべての追加のファイルが離れて行くだろうと思っ"hg revert"の後に変更が加えられましたか?

$ hg revert --all 

を走りました。彼らは去りましたが、最後のコミット以降に書かれたコードもすべて元に戻ってしまったので、大量の作業が失われました!私の選択肢は何ですか?

答えて

12

hg revertファイル(または--allファイル)の場合、Mercurial はファイルのバックアップを別の名前で保存します。これはあなたが仕事を失うのをより困難にすることです。ファイルがfooとなっている場合は、元のバージョンのfoo.origになります。

あなたはあなたの作業コピー内のすべての.origのファイルを見るために

$ hg status --all --include "**.orig" 

を使用することができます。必要なものを移動し、それらを再追加してコミットします。

関連するメモ:セクションにフラグを追加すると、.origファイルが周囲に散在することがありました。私はちょうどあなたの代わりに.hgignoreファイルに

syntax: glob 
*.orig 

を追加することにより、 .origファイルを無視...これは本当に悪いアイデアだと思います。これははるかに安全ですし、ある日あなたはこれらのファイルを

+3

にありがとうございました。これらのファイルは.origにあります。あなたと同じようにマーティン:-) – Rahul

+0

あなたが "必要なものを移動して、それらを再追加してコミットする"ときは、foo.txt.origの名前を各ファイルに対して手動でfoo.txtに変更するか、 ? –