Subversionのバージョンnと(n-1)の間の変更を元に戻したいとします。
バージョン(n-1)のファイルを元に戻すだけです。リポジトリからファイルを取得し、トランク内の最新バージョンとしてチェックインします。
ここでは、バージョン(n-1)からブランチを作成し、トランクにマージして戻したいようです。
これはどのように優れているか、「より正確」ですか?
この場合、それは1つのディレクトリ内のいくつかのファイルです。これらのファイルには、他の最近の変更はありません。
あなたと他の人のために悪いコミットをきれいに取り除くために...
「元に戻す」は、ローカルの変更にのみ影響するため、探しているものではありません。すでに送信されたリビジョンを元に戻すには、削除するリビジョンの前に「-」(minu)を付けて、否定構文を使用する「svnmerge」を使用する必要があります。例:
current rev: 1337
bad rev: 1330
$sh> svn merge -c -1330 svn://your.svn.url:/your.svn.path .
$sh> svn ci -m "removed revision 1330"
したがって、リポジトリをrev "-1330"で逆マージし、後でチェックインして、自分と他の開発者のために1330から変更を削除します。
意思
特定のリビジョン間の変更を削除するには、過去に1000と1010と言います。
チェックアウトからデータ作業コピータイプまで:
svn merge -r 1010:1000 .
これにより、リビジョン1000と1010の間の作業コピーのすべての変更が削除されます(1000自体に追加された変更は含まれません)。ローカルでの変更がなく、希望どおりの結果が得られたことを確認するまで結果をチェックインしない限り、これを試してみても安全です。
特定のケースでは、単一のリビジョンのみを削除する必要があるため、より一般的な-rの代わりに「-c」を使用できます。
svn merge -c 2000 .
これは、1999年から2000年までの変更を削除した-r 1999:2000と同等です。
を使用svn merge
して、シナリオに非常に役立ちます。
svn merge -c n http://xxxx/xxx/xx