1

my_projectbitbucket でホストされている mercurial リポジトリがあります。今日、私は多くの変更を行い、それらをローカル リポジトリにコミットしましたが、まだプッシュしていませんでした。

それから私は主に詰め物をして太ったrm -rf my_project(!!!!!)。

まだコミットしていないので、今日コミットした変更を取得する方法はありますか? 1 日分のコミット数はそれほど多くないように聞こえますが、実際はそうでした!

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

乾杯。

4

3 に答える 3

3

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

おそらくファイル回復ツールですか?

于 2012-04-24T03:22:49.257 に答える
1

申し訳ありませんが、コミットは作業コピーと共に削除され、ファイル回復ツールが不足している.hgフォルダーを回復する唯一のオプションです。インストールからコードを復元できることがわかりました — すばらしい!

これが再び発生することを恐れている場合は、次のような粗雑なフックをインストールできます

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

これにより、すべてのコミットのコピーが の下の適切なリポジトリに強制的にプッシュされ~/backup-reposます。この-fフラグにより​​、履歴を変更する rebase や mq などの拡張機能を使用している場合でも、バックアップを確実にプッシュできます。また、変更セットを無関係なリポジトリから同じバックアップ リポジトリにプッシュすることもできます — という名前の 2 つの異なるリポジトリを想像してみてくださいfoo。そのため、バックアップ リポジトリは、しばらくすると変更セットの巨大な山になってしまい、たまにそれらを削除したくなるかもしれません。

私はこれを簡単にテストしましたが、日常の作業では、余分なコピーのオーバーヘッドに気付かないと思います。後で感謝するかもしれません:-)

于 2012-04-24T07:56:54.403 に答える
1

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

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

于 2012-04-24T03:23:17.557 に答える