TortoiseSVNを使用して、SVNサーバーにいくつかの悪いコード変更をコミットしました。
現在、ヘッドリビジョンは155ですが、最後の2つのリビジョンを削除して、ヘッドリビジョンが153になるようにします。つまり、最後の2つのコミットを「元に戻す」必要があります。
TortoiseSVNを使用してこれを行うにはどうすればよいですか?TortoiseSVNメニューにオプションがありますか、それともコマンドラインを使用する必要がありますか?
TortoiseSVNを使用して、SVNサーバーにいくつかの悪いコード変更をコミットしました。
現在、ヘッドリビジョンは155ですが、最後の2つのリビジョンを削除して、ヘッドリビジョンが153になるようにします。つまり、最後の2つのコミットを「元に戻す」必要があります。
TortoiseSVNを使用してこれを行うにはどうすればよいですか?TortoiseSVNメニューにオプションがありますか、それともコマンドラインを使用する必要がありますか?
SVN ログを開くと、リビジョンを右クリックして、[このリビジョンに戻す]または[このリビジョンからの変更を元に戻す] オプションを使用できます。これらのオプションはどちらも作業コピーを更新します (後でコミットできます)。
TortoiseSVN 内にリビジョンを削除するオプションはありません。
更新された作業コピーのルートで、次のコマンドを使用する必要があります。
svn merge -rHEAD:153 .
これにより、リビジョン 153 からのすべての変更が「元に戻され」、リビジョン 156 がリビジョン 153 のようになります。
後でコミットすることを忘れないでください!
TortoiseSvn からも同じことができます: 「ログの表示」インターフェイスを開き、リビジョン 153 を選択して右クリックし、「このリビジョンからの変更を元に戻す」を選択します。
残念ながら、TortoiseSVN (またはその他の SVN クライアント) では、履歴から完全に消えるという意味で、リビジョンを実際に削除する方法はありません。SVN リポジトリの履歴を変更するのは難しく、サーバー上での操作が必要です。次の質問を参照してください。
ただし、チェックインを元に戻す新しいチェックインを作成することで、チェックインを「元に戻す」ことができます。これは通常、「逆マージ」と呼ばれる手法で行われます。参照例:偶発的なチェックインの撤回
コマンドラインから:
ファイルへの変更を元に戻す:
svn merge -r <newBadRev>:<oldRevToMergeBackTo> <filename>
例えば:
svn merge -r 155:153 myfile.cpp