2012-04-24 15 views
1

私はbitbucketでホストされている、水銀のリポジトリmy_projectを持っています。今日私はいくつかの変更を行い、それらをローカルのリポジトリにコミットしましたが、まだそれらを押し出していませんでした。mercurial:コミット後、プッシュ前に削除されたリポジトリから回復

私は主に詰めて脂肪を吸ったrm -rf my_project(!!!!!)。

私が今日コミットした変更を取得できる方法はありますか?私はそれらをまだ押し出していないと考えていますか? 1日分のコミットがあまり好きではないことは分かっていますが、それはそうでした!

私がこのプロジェクトに持っている他のクローンは、最新のプッシュ(今日の変更は含まれていません)の最新のものです。

歓声。

+1

を自分自身に感謝かもしれません削除されたファイルそれは、OSとファイルシステムに依存します。おそらくsuperuser.comでそのことについて尋ねるでしょうか? – Thilo

+1

Btw、2番目の実装は常により洗練され、最初のものより良い:-) – zerkms

+0

Bw? –

答えて

3

水銀で保存できません。水銀からのデータは、プロジェクトフォルダのベースの隠しディレクトリに保存されます。あなたの場合はおそらくmy_project/.hgです。あなたの再帰的な削除は、このフォルダも破棄してしまいます。

だからおそらくa file recovery tool

+0

よろしくお願いいたします。私がテストしていた今日のバージョンのコードをインストールしたのは、それがRコードなので、各関数のコードを取得できるほど幸運でした。何もありません!) –

1

いいえ。変更が保存されるまで、変更はローカルリポジトリディレクトリ(その中の.hgディレクトリ)にのみ保存されます。彼らはどこにでも置かれることはありません(/ tmpでさえない)。

削除されたファイルをディスクから復元する可能性はありますが、それを行うための指示やツールを探し回ってください。

+0

よろしくお願いいたします。私がテストしていた今日のバージョンのコードをインストールしたのは、それがRコードなので、各関数のコードを取得できるほど幸運でした。何もない!) –

1

作業コピーとファイル回復ツールと一緒にコミットが削除されるのは残念ですが、紛失した.hgフォルダを回復する唯一のオプションです。私はあなたがインストールからコードを回復できると思う - 素晴らしい!

あなたが再び起こっ本の恐れている場合は、あなたがインストールすることができ、強制的に~/backup-reposの下で、適切なレポにすべてのコミットのコピーをプッシュします

[hooks] 
post-commit = R=~/backup-repos/$(basename "$PWD"); 
       (hg init "$R"; hg push -f "$R") > /dev/null 2>&1 || true 

のような粗製のフック。 -fフラグを使用すると、履歴を変更するrebaseやmqなどの拡張機能を使用してもバックアップをプッシュすることができます。また、無関係なリポジトリからのチェンジセットを同じバックアップリポジトリにプッシュすることもできます - fooという名前の2つの異なるリポジトリを想像してください。そのため、バックアップリポジトリにはしばらくすると、巨大な変更セットが残ってしまい、しばらくしてから削除することをお勧めします。

私はこの簡単にテストし、日常の仕事のために私はあなたが余分なコピーのオーバーヘッドに気付くでしょうとは思わないし、あなたはそれがのファイルシステムレベルの回復にまで来て、私は推測後で:-)

関連する問題