Bri*_*new 70
请参阅SVNBook,特别是"撤消更改"部分,并反向合并.
svn merge的另一个常见用途是回滚已经提交的更改.假设您正在愉快地处理/ calc/trunk的工作副本,并且您发现在更改integer.c的修订版303中所做的更改完全错误.它永远不应该被承诺.您可以使用svn merge来"撤消"工作副本中的更改,然后将本地修改提交到存储库.您需要做的就是指定反向差异:
$ svn merge -r 303:302 http://svn.example.com/repos/calc/trunk
为了澄清,您的初始更改仍将在存储库中.但是你现在已经在以后的版本中撤回了它.即存储库已捕获所有更改(这实际上是您想要的!除非您已检入明文密码或类似密码!)
Dav*_*ser 17
注意:这可能不适用于当前版本的次级版本并且是一个糟糕的想法 - 但我已将其留在此处以供参考
注意: 通常当您错误地检入时,您应该恢复提交 - 请参阅此问题的其他答案.但是,如果您想知道如何实际撤消提交的效果并将存储库更改为之前的状态,则下面会有一些解释:
这不是您通常想要的,但如果您真的想要从存储库中删除实际提交的版本,那么您可以按如下方式对存储库执行令人讨厌的回滚(这假设$REV
设置为最新版本,您是删除):
svn revert -r $((REV-1))
)db/revs/$REV
和db/revprops/$REV
db/current
和(对于subversion 1.6或更高版本)db/rep-cache.db
,然后运行svnadmin recover .
db/rep-cache.db
以防止尝试写入只读数据库错误这一切都假定:
fsfs
基于存储库的存储库1.5.0
(否则你必须手动编辑db/current
和更改版本号而不是运行svnadmin recover .
)当一个巨大的文件被提交到一个我不想永远留在历史(和镜像等)的存储库时,我已经完成了它; 它绝不是理想或正常的做法......
Pet*_*ete 14
警告:接受的答案(由David Fraser提供)应该与SVN 1.5存储库一起使用,但是对于SVN 1.6,您还必须db/rep-cache.db
在下次提交之前删除,否则您将损坏您的存储库,并且可能在下次尝试完成之前无法实现查看.我看到后续的完整检查失败,出现"格式错误的表示标题"错误.
什么是rep-cache.db,你可能会问?在对FSFS布局文件说,你将失去"代表共享功能",如果你删除此文件; 但是,它将在您下次提交时重新创建. 表示共享在1.6中添加.
Jam*_*Ide 12
使用TortoiseSVN,选择"显示日志"并找到要还原到的修订版本.从上下文菜单中,选择"还原为此修订".这会将反向合并执行到您的工作副本中,因此您必须提交工作副本才能完成操作.
另请参阅我们如何跟踪工作副本的分支?:-)
归档时间: |
|
查看次数: |
28366 次 |
最近记录: |