1

に関してすでに多くの質問が寄せられていますがsvn revert、この特定の質問が以前に尋ねられたことがあるかどうかはわかりません。したがって、閉じる/削除する前に、最初に読んでください。この質問。

SVN リポジトリで、ファイルへの変更がより大きなコミットの一部として行われました。このリビジョンを 1100 と呼びましょう。問題のファイルを含む多くのファイルの内容が変更されていますfoo.php

時間が経つにつれて、ファイルを含むいくつかの他の変更がリポジトリに加えられましたfoo.php(リビジョン 1200、1300、1400、および 1500 としましょう)。

foo.php後で、リビジョン 1100 でファイルに加えられた変更が正しくないことが明らかになりました。ただし、リビジョン 1100 および特定のファイルのみですfoo.php

foo.php他のファイルに影響を与えることなく、リビジョン 1200 から 1500のファイルに加えられたすべての中間変更を保持しながら、コミット 1100 を簡単に元に戻すにはどうすればよいですか?

4

1 に答える 1

2

Subversion でコミットを元に戻すとは、リバース パッチをファイルに適用してからコミットすることです。

ファイル「foo.php」にリビジョンで間違った変更が適用されているとしNます。次のようなものを実行すると、何が変更されたかを確認できます

svn diff -c N ^/path/to/that/foo.php

これで、実行することで逆差分を取得できます

svn diff -c -N ^/path/to/that/foo.php

変更を元に戻すには

svn merge -c -N ^/path/to/that/foo.php

作業ツリーが適切な状態になっている間は、コミットしてください。

この形式のマージは「チェリーピッキング」と呼ばれ、特定のビットを引用しましょうsvn help merge:

'reverse range' を使用して、変更を元に戻すことができます。たとえば、ソースとターゲットが同じブランチを参照している場合、以前にコミットされたリビジョンを「元に戻す」ことができます。逆の範囲では、'-r N:M' で N が M より大きいか、または '-c' オプションが負の数で使用されています: '-c -M' は '-r M:<M- 1>'. このような変更を元に戻すことは、「逆マージ」の実行とも呼ばれます。
于 2013-11-06T16:16:55.247 に答える