私は今朝、なんとかして次のようにして足を撃ちました。
幸いなことに、この場合、金曜日に仕事を辞める前に「svn diff> temp.txt」を実行し、temp.txtファイルはまだハードドライブ上にあったので、そのファイルを「パッチ」にフィードして、失われた変更。
しかし、今後の参考のために(つまり、次回同じ愚かな間違いをしたとき)... svnに「svn revert」を取り消すように指示する方法はありますか? svnはローカル/チェックインされていない差分のバックアップをどこにでも保持しますか?
いいえ、(絶対に)[〜#〜] no [〜#〜]。
Subversionにファイルを元に戻す必要があると言った場合、すべての変更は風によって失われます。
あなたの記憶だけがそれらを取り戻すことができます。
例外:追加した新しいファイルは、ステータス「追加済み」のみを失いますが、ファイルはこのディレクトリに残り、ステータスは不明(「?」)のみです。
プラットフォーム/ソフトウェア例外: WindowsでTortoiseSVNを使用すると、Revertはまずファイルをごみ箱に入れてから元に戻します。ごみ箱を掘ってファイルを復元できます。
解決策があります...ごみ箱に移動すると、削除されたファイルの最新バージョンが見つかります。カメは、元に戻すすべてのファイルをごみ箱に「投げ」ます。
Subversion固有ではありませんが、Eclipseを使用している場合は、地元の歴史で運を試すことができます。
さて、もう少しSubversion固有のものです:変更するたびにブランチを作成したくない場合は、いくつかのトランクをローカルにチェックアウトしておくことができます(trunk-modif-1、trunk-modif-2 .. 。)。各「変更」は別々のツリーで行われ、どのチェックアウトがどの変更に対応するかのリストのみを保持する必要があります。
または、Gitをローカルで使用することもできますが、私は試したことはありません。
最近、新しいファイルの変更(約10)をSVNにコミットしないというこのミスをしましたが、私の愚かなミスのためにすべてが消えました。しかし、私を救ったのは、コンテキストメニューの[以前のバージョンを復元する]ウィンドウです。これは安心と教訓でした。
svn command-line clientを使用している場合、ファイルを回復することはできません。
ただし、TortoiseSVNをsvnクライアントとして使用している場合は、それらを回復できます。 TortoiseSVNは自動的にそれらをごみ箱に移動します。誤って元に戻した後、そこから復元できます。
これはTortoiseSVNの構成可能なオプションです。 [設定]-> [ダイアログ1]-> [元に戻すときにごみ箱を使用]
デフォルトではチェックされています。つまり、ファイルはごみ箱に移動されます。必要に応じて(ほとんどの場合、これを無効にする必要はありません。理由がある場合は、お知らせください)
InteliJを使用している場合、あなたは幸運な人です。トップメニューにはバージョン管理オプションがあり、その下にはローカル履歴オプションがあり、選択したファイルのすべての履歴、そのファイルで行ったすべての操作(更新、コミット、復帰)があります。
頑張って、アークデ
また、.NETコード(.csファイルなど)を元に戻し、元に戻す前にアプリケーションをビルドしたが、変更を加えた後、リフレクターツールのいずれかを使用してアセンブリファイルから変更を回復し、コードを表示できます。
ソリューション(Visual Studio + AnkhSVN)を元に戻し、いくつかのファイルの変更を失います。ごみ箱にファイルが見つかりません。
BUT:Handy Recoveryで失われたファイルを復元しました。つまり、SVNは復帰時にファイルを削除するだけです。
データ復元ソフトウェアを使用して、復元されたファイルを復元します(トライアル ハンディ復元 )
Eclipseの履歴ブラウザでファイルのローカル変更ログ(ローカルリビジョン)を見つけることができたのは非常に幸運でした。私は違いを1つずつ調べていたので、上書きする前にファイルを数回保存していました。
いいえ、SVNはログやバックアップを保持しません(他の回答に記載されているTortoiseSVNの解決策があります)。
しかし、誰かが回答を閲覧していて、OPの質問でこのコメントに気付かなかった場合:
「幸いなことに、この場合、金曜日に仕事を辞める前に「svn diff> temp.txt」を実行し、temp.txtファイルはまだハードドライブ上にあったため、そのファイルを「パッチ」にフィードして回復することができました。私の失われた変更。」
「svn revert」を実行する前に、「svn diff」を実行するのが一般的なパラダイムだと思います。これを行う習慣を身につければ、差分が端末にエコーされただけでも、失われた変更を回復するための手段が少なくとも1つあります。