如果我们从存储库修订版"1"开始,人员a、B、C、D和E提交代码更改(修订版6是E提交后的最新修订版),则我们将SVN用于版本控制系统。假设程序员C的更改必须退出,但我们希望保留来自人员A、B、D、E的更改。我们如何做到这一点?
希望它能在一定程度上解释。
百万感谢MB Chand
您需要反向合并。
如果你使用TortoiseSVN客户端,它很容易(http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html):
如果要将更改合并回工作副本,则要还原已提交的更改,请选择对的修订revert并确保已选中"反向合并"框。
如果使用命令行,则会有点复杂(http://svnbook.red-bean.com/en/1.7/svn.branchmerge.basicmerging.html):
svn合并的一个非常常见的用途是回滚一个更改已提交。假设你正在愉快地工作正在使用/cacc/trunk的副本,然后您发现更改已经完成回到修订版303,它改变了integer.c,这是完全错误的。它本不该犯的罪。您可以使用svn-merge来"撤消"更改工作副本,然后将本地修改提交到存储库。您所需要做的就是指定一个反向差异。(您可以通过指定--revision 303:302或等效的--更改-303.)
$ svn merge -c -303 ^/calc/trunk
--- Reverse-merging r303 into 'integer.c':
U integer.c
--- Recording mergeinfo for reverse merge of r303 into 'integer.c':
U A-branch
$ svn status
M .
M integer.c
$ svn diff
…
# verify that the change is removed
…
$ svn commit -m "Undoing change committed in r303."
Sending integer.c
Transmitting file data .
Committed revision 350.
当我们谈论"删除"更改时,我们实际上是在谈论将其从HEAD修订版中删除。原始更改仍然存在在存储库的历史中。