SVNのリバースマージ(Revert Merge)とは何ですか?簡単な説明と、最初から最後までの段階的なプロセスがすばらしいでしょう。
誰かが私にプロセスを教えてもらえますか?そして、良いシンプルな例も素晴らしいでしょう。
亀から ユーザーガイド :
変更を作業コピーからマージして元に戻し、既にコミットされている変更を元に戻すには、元に戻すリビジョンを選択し、[逆マージ]チェックボックスがオンになっていることを確認します。
私の見解では、リバースマージは、1つ以上の以前のコミットに対する「アンチ」コミットを表す「通常の」コミットです。以前のコミットは引き続き存在しますが、変更は新しい「アンチ」コミットによって元に戻ります。
逆マージは正式にはマージと同じですが、もちろん逆順です。逆マージされたリビジョンからの変更は、作業コピーで元に戻されます。
たとえば、HEADからrev。123に戻る場合、作業コピーがHEAD状態にあると仮定して、このようにリバースマージします:
svn merge -r HEAD:123
これにより、作業コピーはリビジョン123の状態に設定されますが、正式にはHEADに基づいています。作業コピーの状態は、ファイルを手動で編集してリビジョン123に戻した場合と同じになります。現時点では、リポジトリで何も変更されていません。
これは同じではないことに注意してください 更新をリビジョン123に変更します。これを行った場合、作業コピーのファイルはどちらの場合も同じ内容になりますが、作業コピーの状態は異なります。SVNは、作業コピーがリビジョン123ではなくリビジョン123に基づいていることを認識します頭。その後、変更をコミットしようとすると、HEADに最初に更新する必要があることが通知されます。これにより、当面は何も変更していないと想定して、リビジョン123への更新が取り消されます。
元のシナリオに戻ります。リバースマージに問題がなければ、リポジトリにチェックインできます。
svn commit -m "We undid all changes since r123."
または、間違いを犯したと思われる場合は、revertreverse mergeを使用できます。これは、作業コピーをリポジトリの状態に戻すだけなので、まったく異なります。これは(この場合はHEAD)に基づいています:
svn revert --recursive .
ただし、その場合は注意してください。リバースマージは元に戻せず元に戻ります:-)。ドットは現在のディレクトリを指し、誤って何かを元に戻さないようにするための安全対策として、(他のほとんどのSVNコマンドの場合とは異なり)明示的に指定する必要があります。