4

ここに多くのコードを含む非常に大きなソリューションがありました。TFS に問題があったため、新しい「クリーンな」リポジトリを作成したいと考えました。古いリポジトリへのマッピングを削除し、新しいマッピングを作成してみました。これにより、ソリューションへのマッピングが既に存在するというエラーが発生しました。Source Control Explorer->にWorkspaces移動し、そこでソリューションへのマッピングを削除しました。その後、新しいリポジトリをソリューションにマップすることができました。

しかし、ハード ディスクを確認したところ、心臓発作を起こしそうになりました。TFS によってすべてのコード ファイルが削除されたのです。ディレクトリと依存関係はまだそこにありましたが、すべてのプロジェクト ファイル、ソリューション ファイル、およびすべてのコードがなくなってしまいました。

ここで私を助けてください! これは今ではなくなってしまった多くの作業であり、私は本当に必死にそれを取り戻す必要があります:(

編集:現在、いくつかのファイル回復ツール (Recuva など) を使用してファイルを回復しようとしていますが、削除された変更を見つけることができません。しかし、ファイルは実際にはなくなっており、Windows の検索では見つからず、隠しもされていません。これがなぜなのか誰か教えてもらえますか?その場合、ファイルはまだ私の SSD にありますか?

4

3 に答える 3

5

TFS などのソース管理システムはすべて、非常によく似た線で機能します。サーバーのバージョンのコードを「コード」として扱います。これはマスター コピーであり、サーバーによって「所有」されます。次に、PC でコードのコピーを取得できます (ワークスペース マッピングを追加することにより、このコピーを配置する場所を指定します)。コードのコピーに変更を加え、チェックインして、サーバー上のコードのマスター バージョンに適用し直すことができます。

したがって、ワークスペース マッピングを変更すると (たとえば、コードのコピーの場所をフォルダー A からフォルダー B に変更する)、ソース管理システムに「場所 A にあるコードのコピーを取り除いてください。 B」に入れます。これが、すべての「あなたの」コードを削除した理由です。それは「あなたの」コードではなく、サーバーのコードのコピーでした-あなたはそれをあなたのPCの別の場所に置くように頼みました...そうしました。

ただし、ワークスペース内のいずれかのコードを編集した場合、ファイルはチェックアウトされているはずです。この場合、TFS は保留中の変更があることを認識しており、それらのファイルを削除すべきではありませんでした。保留中の変更を含むワークスペース マッピングを変更しようとしたため、エラーが発生しました。

これが起こらない唯一の方法は、手動でファイルを書き込み可能に変更し、Visual Studio/TFS の外部でそれらに変更を加えた場合です。これにより、TFS は変更を行ったことを認識しませんでした。一部のファイルを「ひそかに」変更した場合、TFS はそれらが変更されていないと見なし、完全に削除した可能性があります。これらのファイルは、ファイル回復ツールに表示されない場合があります。これは、TFS にワークスペースの再配置を依頼することで、ファイルを削除してからすぐに (新しいフォルダーに) 再取得することになり、削除されたファイルのデータがほぼ確実に上書きされるためです。ファイル。

変更がチェックインされている可能性がある場合は、次のように見つけることができます。TFS ソース管理ビューでチーム プロジェクトに移動します。プロジェクトを右クリックし、[履歴の表示] オプションを選択します。これにより、プロジェクトへのすべてのチェックインが履歴の逆順で一覧表示されます。チェックインした場合は、ここにチェックインが表示されます。(履歴内の任意のチェンジセット エントリをダブルクリックして、変更されたファイルのリストを表示できます。任意のファイルを右クリックすると、「比較...」を実行して、どのような変更が行われたかを正確に示す差分を表示できます)

変更がチェックイン履歴にない場合は、残念ながら失われています。

あなたはすでにこれを学んでいると思いますが、ソース管理などのツールを適切に使用することを学ぶことが重要です。これらは便利で強力なツールですが、その仕組みを理解していないと危険な場合があります。

于 2013-04-28T21:16:24.887 に答える
-1

申し訳ありません。

TFS は何も削除しませんでした。単にチェックインしなかっただけです。TFS がコードを「削除」していた場合、ソース管理エクスプローラーの履歴でコードを確認できます。コードに対して「削除」操作を含む変更セットがあったことがわかります。

その後、その変更セットをロールバックして、すべてのコードを取得できます。

于 2013-04-28T22:24:13.040 に答える