16

我不小心用'svn copy'复制主干覆盖了一个旧分支。更具体地说,对于每个版本,主干都会分支并作为标签保存,使用:

svn copy svn://machine/REPOS/trunk svn://machine/REPOS/tags/$RELEASENR

但这一次,'RELEASENR' 的值是旧的现有分支而不是新分支的值。有人对如何撤消这个错误有任何想法吗?已经谢谢了!

4

3 回答 3

18

Subversion 不是这样工作的。你实际上并没有覆盖它。如果复制或移动的目标存在并且是目录,则复制或移动的项目将放置该目录中:

svn copy svn://machine/REPOS/trunk svn://machine/REPOS/tags/EXISTS_ALREADY

如果你看,你应该会发现:

svn://machine/REPOS/tags/EXISTS_ALREADY/trunk 

这是您刚刚尝试标记的主干的副本。这种情况下的修复很简单:

svn mv svn://machine/REPOS/tags/EXISTS_ALREADY/trunk \
       svn://machine/REPOS/tags/CORRECT_TAG_NAME

(如果您不熟悉 *nix:\ 表示我已将一条逻辑线分成两条物理线,以免水平滚动条过度劳累。)

于 2009-04-07T09:20:10.273 回答
4

为了撤消

svn cp OLDFOLDER NEWFOLDER

如果更改尚未提交,只需使用

svn revert NEWFOLDER --depth=infinity
于 2014-11-12T10:32:10.423 回答
2

您可以通过合并回上一个版本来撤消上一个版本。见http://anilsaldhana.blogspot.com/2007/11/svn-undo-change.html

svn merge --revision 92:91 .

然后提交

于 2012-01-03T23:27:06.007 回答