4

重复:如何回滚全部或部分对 svn 的提交?


我在http://www.projectlocker.com/上为我的一个项目设置了一个帐户。我是唯一一个研究它的人,但我认为版本跟踪仍然很有用,这是一次很好的学习体验。我已经使用 /trunk/、/branches/、/tags/ 设置了标准文件夹结构。

因此,假设您正在处理主干并意识到您确实搞砸了一些东西,但您想返回一些修改并从那里继续。我可以更新到以前的修订版并开始进行更改,但是服务器不允许我提交,除非我从最后一个修订版进行更新,这也会带来所有不需要的更改。那么我如何既回到以前的修订版,然后从那里继续在主干上工作呢?我是否以某种方式将旧版本合并到最新版本中?

我正在使用 Visual Studio 的 AnkhSVN 插件,所以我很感激并回答解释如何在该客户端中执行此操作,但我确信我可以从更概念性的答案中找出实际的按钮点击。

4

3 回答 3

11

我不使用 AnkhSVN,所以我现在不知道你需要什么点击,但是在 TortoiseSVN 和命令行中这是一项相当重要的任务:

您只需通过应用反向合并来撤消所有更改。通常这是在 Tortoise 中通过以下方式完成的:

  • 显示您的工作副本的日志
  • 选择要反向合并的修订
  • 按鼠标右键并选择“恢复到此版本”
  • 提交新版本(与之前选择的版本完全相同)

在命令行上,您应该这样做:

svn merge -r 120:100 http://svn.example.com/<path_to_your_repo>

这将撤消 101-120 的所有修订,留下与 Rev 100 相同的版本

于 2009-07-18T04:09:30.140 回答
1

从颠覆书中:

http://svnbook.red-bean.com/en/1.4/svn-book.html#svn.branchmerge.commonuses.undo

本质上就像你说的......你想将旧版本与你的工作目录合并。

于 2009-07-18T04:00:45.290 回答
0

不确定它是否回答了您的问题,但您可以根据旧版本创建一个分支。

使用 AnkhSVN 最简单的方法是:

  • 右键单击解决方案
  • 颠覆 -> 分支解决方案
  • 检查 url 是否是你想要分支的 url (eg '^/trunk') (^)
  • 选择:特定版本并键入(或浏览)您喜欢使用的版本。
  • 键入日志消息
  • 选中底部的“创建后切换到分支”复选框
  • 然后确定

(^)如果 url 不是您所期望的,您应该在 File -> Subversion -> Change Source Control 中修复解决方案绑定 url。通常它应该是项目的逻辑根。

于 2009-07-18T17:09:02.473 回答