回滚svn移动/重命名

时间:2010-11-09 00:23:01

标签: svn

我心不在焉地在我的svn主干中找到一个文件夹而不是分支它。我可以把它还给我,但我担心我会失去历史。如何最好地撤消?

编辑:我应该清楚我在存储库上进行了移动,而不是我的工作副本,所以这是一个自动提交。

4 个答案:

答案 0 :(得分:4)

请参阅有关Undoing Changes的subversion手册,以便撤消您的错误更改。

  

您可以使用svn merge来“撤消”   改变你的工作副本,然后   提交本地修改   库。你需要做的就是   指定反向差异。 (您可以   通过指定--revision来完成此操作   303:302,或通过等效 - 改变   -303。)

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

答案 1 :(得分:3)

如果你想恢复,那就好像移动从未发生过,那么你需要将整个存储库转储到你想要的版本,然后重新创建存储库。

查看herehere了解详情。

答案 2 :(得分:1)

如果您没有提交:

svn revert PATH

答案 3 :(得分: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

这将完全保留您的历史(包括心不在焉的行动)