6

私はSVN(TortoiseSVN)を使用していますが、しばしば次のような状況になりました:

特定の (古い) リビジョン以降の変更をすべて破棄し、すべてのファイルをこの特定の (古い) バージョンに戻したいと考えていました。次に、この特定の (古い) リビジョンが最新のものであるかのように、さらに作業を進めたいと思いました。つまり、特定の古いリビジョンを新しいリビジョンとしてコミットできるようにしたかったのです。

この問題の解決策をいくつか見つけました (たとえば、stackoverflow.com/questions/402159/roll-back-or-revert-entire-svn-repository-to-an-older-revision またはrustyrazorblade.com/2007/04/how- to-roll-back-commits-to-an-earlier-version-of-a-repository-in-svn/)。

ただし、特定のリビジョンにロールバックする簡単な方法はあるのでしょうか。バージョン管理はそのようなものにちょうど良いと思いました(または何か誤解していますか?)。

簡単なコマンド/ボタン/などはありますか? 私のローカルリポジトリを古いリビジョンに更新し、それが最新のものであると宣言しますか?

これを行うための「組み込み」機能はないと思うので、開発者がこの機能を統合しないという決定に至った理由を知りたいと思いました。誰もこれを知っていますか?

4

4 に答える 4

3

何らかの理由で、SVN の人々はこれを「逆マージ」と呼ぶことにしました。TortoiseSVN Merge ダイアログで、Reverse Merge ボックスをチェックし、revisions ボックスが次のようになっていることを確認しますHEAD-324(324 は元に戻すバージョンです)。

于 2010-03-19T14:04:01.607 に答える
3

TortoiseSVN には、これを行うためのより簡単な (または少なくともより直感的な IMHO) 方法があります。舞台裏で実際に行っているのは、他の人が言及した「逆マージ」であると思います。

  1. ロールバックするファイル/フォルダーを右クリックします。
  2. TortoiseSVN メニューから「ログを表示」をクリックします。
  3. 元に戻すリビジョンを選択します。
  4. それらのリビジョンを右クリックします。
  5. 「このリビジョンからの変更を元に戻す」を選択してください。「このリビジョンに戻す」と混同しないでください。
  6. 「はい」をクリック
  7. これは作業コピーのみを変更することに注意してください。これが期待どおりの動作をしたことを確認してからコミットし、ログ メッセージに「ロールバック」または「リバース マージ」に関する何かを入力します。
于 2010-03-24T21:22:20.100 に答える
2

たとえば、引用したリンク(svnリポジトリ全体を古いリビジョンにロールバックまたは元に戻す)には、リバースマージ(Powerlordが述べたように)という解決策があるため、あなたを正しく理解しているかどうかはわかりません。

TSVN マージ ドキュメントから:

作業コピーから変更をマージして、既にコミットされた変更を元に戻す場合は、元に戻すリビジョンを選択し、[逆マージ] ボックスがオンになっていることを確認します。

心に留めておくべき重要なことは、「変更をロールバック」するのではなく、「それらをマージ」してから再コミットすることだと思います。いわば「前進し続ける」のです (SVN には「逆転」がないためです。結局のところ、これはバージョン管理であり、「忘れる」ことは想定されていません :))。

なんらかの理由で絶対にリポジトリに入れることができないものを誤ってコミットした場合は、「もう一度取り出す」ためにさらに長い時間を費やす必要があります(また、リンクしたスレッドでも説明されています:バックアップと復元)。

于 2010-03-19T14:33:45.237 に答える
-2

安全に保管するために現在のトランクをブランチに移動し、トランクに戻したいリビジョン番号でコピーを作成します。

于 2010-03-19T14:04:10.497 に答える