102

私は今朝、次のことを行って自分の足を撃つことができました。

  1. プロジェクトの変更に取り組み始めました
  2. たくさんのファイルにたくさんの編集を加えた
  3. 私のアプローチがすべて間違っていて、最初からやり直す必要があることに気づきました
  4. プロジェクトの最上位に cd し、「svn --recursive revert 」を実行しました。ローカル サンドボックスを変更前の状態に復元します。
  5. ローカルのサンドボックスに他にも多くの未解決の変更があり、それらをすべて消去したばかりであることに気付いたとき、恐怖に吠えました。(先週の金曜日に svn サーバーがダウンしていたのでチェックインできず、週末にそれらのことを忘れていました)

幸いなことに、この場合、金曜日に仕事を辞める前に「svn diff > temp.txt」を実行しており、temp.txt ファイルはまだハード ドライブに残っていたので、そのファイルを「パッチ」にフィードして復元することができました。失われた変更。

しかし、私の将来の参考のために(つまり、次回同じ愚かな間違いを犯したとき)...「svn revert」を元に戻すようにsvnに指示する方法はありますか?svn はローカル/チェックインされていない差分のバックアップをどこかに保持していますか?

4

10 に答える 10

106

解決策があります...ごみ箱に移動すると、削除されたファイルの最新バージョンが見つかります。Tortoise は、元に戻すすべてのファイルをごみ箱に「投げ」ます。

于 2009-12-16T08:37:55.400 に答える
86

いいえ、(絶対に)いいえ

ファイルを元に戻すように Subversion に指示すると、すべての変更が風によって失われます。

それらを取り戻すことができるのはあなたの記憶だけです。

例外:追加した新しいファイルは、"追加済み" ステータスのみを失いますが、ファイルはこのディレクトリに残り、ステータスのみが不明 ("?") になります。

プラットフォーム/ソフトウェアの例外: Windows で TortoiseSVN を使用すると、Revert は最初にファイルをごみ箱に捨ててから元に戻します。ごみ箱を掘り下げてファイルを復元できます。

于 2009-10-05T17:36:19.687 に答える
32

Subversion固有ではありませんが、Eclipseを使用している場合は、地元の歴史で運試しをすることができます。

さて、もう少しSubversion固有のものです。変更を加えるたびにブランチを作成したくない場合は、いくつかのトランクをローカルでチェックアウトしておくことができます(trunk-modif-1、trunk-modif-2。。 。)。各「変更」は別々のツリーで行われ、どのチェックアウトがどの変更に対応するかのリストを保持するだけで済みます。

または、Gitをローカルで使用することもできますが、私は試したことはありません。

于 2009-10-05T22:22:19.583 に答える
14

最近、新しいファイルの変更 (約 10) を SVN にコミットしないというこの間違いがあり、私のばかげた間違いのためにすべて消えてしまいました。しかし、私を救ったのは、コンテキストメニューのウィンドウの「以前のバージョンを復元する」オプションでした。ふぅ、それは安堵と教訓でした。

于 2011-11-17T10:12:38.673 に答える
6

InteliJを使用している場合、あなたは幸運な人です。トップメニューにはバージョン管理オプションがあり、その下にはローカル履歴オプションがあり、そのファイルで行ったすべての操作(更新、コミット、復帰)を含む、選択したファイルのすべての履歴が表示されます。

頑張って、アークデ

于 2012-03-02T09:00:39.020 に答える
4

また、.NET コード (.cs ファイルなど) を元に戻し、元に戻す前にアプリケーションをビルドしたが、変更を加えた後である場合は、リフレクター ツールを使用してアセンブリ ファイルから変更を復元し、コードを表示することができます。

于 2012-09-17T15:48:50.450 に答える
2

ソリューション(Visual Studio + AnkhSVN)を元に戻し、いくつかのファイルの変更を失いました。ごみ箱にファイルが見つかりません。

BUT:失われたファイルを Handy Recovery で回復しました。つまり、SVN は元に戻すときにファイルを削除するだけです。

データ復元ソフトウェアを使用して、元に戻したファイルを復元します (試用版Handy Recoveryなど) 。

于 2014-12-24T15:05:38.680 に答える
1

いいえ、SVN はログやバックアップを保持しません (ただし、他の回答に記載されている TortoiseSVN の解決策があります)。

ただし、誰かが回答を閲覧していて、OPの質問でこのコメントに気付かなかった場合:

「幸いなことに、この場合、金曜日に仕事を辞める前に「svn diff > temp.txt」を実行しており、temp.txt ファイルはまだハード ドライブに残っていたので、そのファイルを「パッチ」にフィードして回復することができました私の失われた変化。」

「svn revert」を実行する前に「svn diff」を実行するのが一般的なパラダイムだと思います。これを行う習慣を身につければ、差分が端末にエコーされただけでも、失われた変更を回復するための少なくとも 1 つの可能な手段が得られます。

于 2016-12-09T16:53:38.463 に答える