如何撤消不在HEAD的svn提交

时间:2014-01-07 19:00:42

标签: svn version-control

我有一个不在头的提交,虽然后来的提交没有触及它上面的任何文件。

有没有办法从主干中删除此提交?

谢谢,

2 个答案:

答案 0 :(得分:2)

有一些基本方法取决于修订从历史中删除的重要性:

  • 通过svn merge撤消更改,提交更改,然后继续
  • 转储存储库并通过一些svn转储工具编辑变更集。 svndumpfilter或SvnDumpTool可能有用。需要付出更多的努力,但如果提交的数据属于“阅读前刻录”类型 - 密码,“绝密”文件等,则可能是值得的。
  • 等待svn obliterate实施。 Don't hold your breath

答案 1 :(得分:1)

您可以撤消Subversion中的更改 - 即使使用svn merge也不是头脑。

假设您已修订版100,但意识到修订版94中的更改存在问题:

$ svn up  # Make sure your working directory is up to date
$ svn st  # Make sure there are no pending changes.
$ svn merge -c -94 .  # Removes changes done in Revision #94.

注意否定94. -c表示改变。使用负数修订号,就像你说的那样:

$ svn merge -r 94;93 .

请注意,如果您没有删除上一次更改,则可能会发生冲突(您在修订版#96中进行了更改,并在修订版#94中进行了更改)。当您对svn merge执行任何操作时,始终建议您使用干净的工作目录。

您还可以使用--dry-run参数查看在实际执行反向合并之前要更改的内容。这将帮助您捕获可能的冲突,并确保您认为需要更改的文件。