通过命令行撤消SVN 1.6错误

通过命令行撤消SVN 1.6错误,svn,undo,revert,Svn,Undo,Revert,我正在为SVN使用MacOSX终端。说到SVN和命令行,我非常业余。我通常只是一个前端代码猴子 我在尝试签出分支时,意外地将项目的一些分支提交到了项目的另一个分支中。是的,我有那么坏 远程存储库: MyProjectBranch BranchNeedsToNotBeHere BranchNeedsToNotBeHere2 BranchNeedsToNotBeHere3 expectedDirectoryStillHere1 expectedDirector

我正在为SVN使用MacOSX终端。说到SVN和命令行,我非常业余。我通常只是一个前端代码猴子

我在尝试签出分支时,意外地将项目的一些分支提交到了项目的另一个分支中。是的,我有那么坏

远程存储库:

MyProjectBranch
    BranchNeedsToNotBeHere
    BranchNeedsToNotBeHere2
    BranchNeedsToNotBeHere3
    expectedDirectoryStillHere1
    expectedDirectoryStillHere2
    expectedDirectoryStillHere3
最后,按所需版本更正本地存储库:

MyProjectBranch
    expectedDirectoryStillHere1
    expectedDirectoryStillHere2
    expectedDirectoryStillHere3
我如何在不让自己看起来无能的情况下撤销这场闹剧?这看起来像是一个简单的“revert”命令,但我发现的只是“reverse merging”-如果我做得对,它根本没有删除无关的目录,并且预期的目录不是正确的版本,而是较旧的版本。所以我甚至可能做得不对


对任何能救我的人来说,都是莫大的荣誉和赏金

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


另外,我不知道为什么先在本地删除额外的分支,然后再进行提交并不能解决这个问题。您尝试过吗?

通过执行以下操作还原您的提交:

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


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

一个选项是在另一个目录中重新签出,并修改到一切正常的程度。@ashutshraina您是说。。。远程删除整个分支,然后将本地的正确分支提交回原位?我以后也需要将这个分支重新整合到主干上,这会影响什么吗?如果你能在回答中清楚地表达这个过程,我会给你一些要点。如果你需要它们,只要
svn rm
它们,如果你在其他地方需要它们,
svn mv
它们?是的,你的错误仍然存在于历史中,但并不明显,而且可能没有人真正关心这一点。