通过命令行撤消SVN 1.6错误

时间:2014-01-09 16:37:36

标签: svn undo revert

我正在使用Mac OS X终端进行SVN。在SVN和命令行方面,我非常业余。我通常只是一个前端代码猴。

我不小心,不知何故,在尝试检查分支时,在项目的另一个分支内部提交了项目的一些分支。是的,我很糟糕。

远程存储库:

MyProjectBranch
    BranchNeedsToNotBeHere
    BranchNeedsToNotBeHere2
    BranchNeedsToNotBeHere3
    expectedDirectoryStillHere1
    expectedDirectoryStillHere2
    expectedDirectoryStillHere3

最后以所需的版本更正本地存储库:

MyProjectBranch
    expectedDirectoryStillHere1
    expectedDirectoryStillHere2
    expectedDirectoryStillHere3

如何在不让自己看起来不称职的情况下撤销这种讽刺?这似乎是一个简单的“恢复”命令可用,但我发现的只是“反向合并” - 如果我已经做到了这一点,那么根本没有删除无关的目录,以及预期的目录没有正确的修订版,但是版本较旧。所以我甚至可能没那么做。

很多荣誉,如果可以的话,对任何可以拯救我的人都有赏金!

2 个答案:

答案 0 :(得分:1)

通过执行以下操作恢复您的提交:

svn merge -c -$REV

其中$ REV是您引入目录的更改。如果您在一系列修订版中执行此操作,请对每个修订版重复此操作。请注意修订号前面的破折号,它是一个减号,意味着该修订的逆转。如果要删除的修订范围是路径上提交的唯一内容,则可以使用-r $YOUNGEST:$OLDEST而不是-c -$REV来指定范围,并执行单个反向合并。

如果一切都仅限于添加新文件/目录,您也可以在路径上使用svn rm并删除它们。

答案 1 :(得分:0)

首先,我认为我要说的不是正确的做法。它甚至可能被否决。 转到svn remote并删除您认为不应该存在的分支。 更新本地,你应该完成。 在执行此操作之前进行备份。

此外,我不确定为什么首先在本地删除额外的分支,然后提交将不会为您解决此问题。你试过了吗?