回滚svn的移动/重命名操作

5

我不小心将一个文件夹移动到了我的svn主干而不是分支。我可以将它移回来,但我担心会失去历史记录。那么怎样才能最好地撤销这个操作呢?

编辑:我应该明确一点,我在仓库上进行了移动操作,而不是在我的工作副本上,因此这是一个自动提交。

4个回答

4

如果您需要撤销错误的更改,请参阅关于撤消更改的子版本手册。

您可以使用svn合并在工作副本中“撤消”更改,然后将本地修改提交到存储库。您只需要指定一个反向差异即可(可以通过指定--revision 303:302或等效的--change -303来实现)。

svn merge -c -303 http://svn.example.com/repos/calc/trunk

3
如果您想恢复到移动之前的状态,那么您需要倒退到您想要的版本,然后重新创建存储库。请注意保留这里这里以获取详细信息。

2

如果你没有提交它:

svn revert PATH

"svn revert" 只会还原 本地 修改。SP 在代码库上进行了更改。 - zellus
1
@zellus:明白了,这就是为什么我说如果他没有提交它。 - Rafe Kettler

0

在同一路径下误提交之前,最好先复制最新版本。

心不在焉的操作。

     svn mv -m 'move it!' \
         http://svn.example.com/repos/calc/trunk \
         http://svn.example.com/repos/calc/foo

在移动之前,请检查日志以获取最新版本

    svn log http://svn.example.com/repos/calc/trunk

...

    ------------------------------------------------------------------------
    r17610 | john.doe | 2017-08-01 11:02:43 -0300 (tue, 01 aug 2017) | 1 line

    move it!
    ------------------------------------------------------------------------
    r17581 | john.doe | 2017-07-31 17:42:57 -0300 (mon, 31 jul 2017) | 1 line

    fix bug
    ------------------------------------------------------------------------

将最后一个好的版本17581复制到HEAD
 svn mv -m 'fix absently minded move' \
     http://svn.example.com/repos/calc/trunk@17581 \
     http://svn.example.com/repos/calc/trunk

这将完全保留您的历史记录(包括偶然的移动)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接