2010-11-09 82 views
5

我心不在焉地mv我的svn树干文件夹,而不是分支它。我可以把它退回去,但我恐怕会失去历史。这最好如何撤消?回滚一个svn移动/重命名

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

+0

你犯了吗? – 2010-11-09 00:30:10

回答

4

请参阅有关的颠覆手册,以便撤消您的错误更改。

你可以用svn merge来“撤销”你工作副本的 变化,然后 提交本地修改到 库。您只需要 指定相反的差异。 (您可以 通过指定--revision 303做到这一点:302,或等效--change -303)

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

如果没有提交它:

svn revert PATH 
+0

'svn revert'只能恢复* local *的变化。 SP在存储库上进行了更改。 – zellus 2010-11-09 06:27:55

+1

@zellus:理解,这就是为什么我说如果他没有犯。 – 2010-11-09 13:48:20

3

如果要恢复,以便就好像移动从来没有发生过,然后你需要放弃整个仓库给你要的修订,然后重新创建存储库。

查看详情herehere

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/[email protected] \ 
    http://svn.example.com/repos/calc/trunk 

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