假设我在存储库文件夹中有一组提交...
123 (250 new files, 137 changed files, 14 deleted files) 122 (150 changed files) 121 (renamed folder) 120 (90 changed files) 119 (115 changed files, 14 deleted files, 12 added files) 118 (113 changed files) 117 (10 changed files)
我想获得一份工作副本,其中包括修订版117以后的所有更改,但不包括修订版118和120的更改.
编辑:为了使问题更清楚,我想撤消在118和120中所做的更改,同时保留所有其他更改.该文件夹包含数百个子文件夹中的数千个文件.
实现这一目标的最佳方法是什么?
得益于Bruno和Bert,答案就是命令(在这种情况下,在执行完全合并后删除120)
svn merge -c -120 .
请注意,必须使用前导减号指定修订号.'-120'不是'120'
撤消修订118和120:
svn up -r HEAD # get latest revision svn merge -c -120 . # undo revision 120 svn merge -c -118 . # undo revision 118 svn commit # after solving problems (if any)
另请参阅撤消更改中的说明.
注意-c -120
参数中的减号.该-c
(或--change
)交换机支持,因为颠覆1.4,旧版本可以使用-r 120:119
.
如果您使用TortoiseSVN(Subversion的Windows客户端),则有一种更简单的方法.您只需单击以查看更新的工作副本中的日志,选择要撤消的修订,右键单击,然后选择"从这些修订中还原更改".
这是一种安全的操作,因为更改仅应用于您的工作区.您仍然必须承诺修改您的存储库.
这是TortoiseSVN的最佳功能之一.我一直都是一个命令行,但是Tortoise改变了主意.