首页 文章

从修订版还原

提问于
浏览
1

我正在使用 Tortoise SVN .

我最近检查了一堆代码(一次提交) . 在3个小时的 Session 中,他们决定废弃一堆我的代码和该功能 . 我的老板希望我使用应用程序该区域的旧代码将Subversion重新安装到位 .

我说有大约3-4个文件受到影响 . 在我提交新功能的最后一次提交中,我需要将这些文件回滚到它们检查它们之前的状态 .

所以,我并不真正了解Revert Back to Revision的功能 . 我继续在日志中找到过去提交中这些文件的最新版本,然后在日志中右键单击这些文件,然后恢复到修订版 .

现在它是否完全用旧版本替换我的本地副本?如果我只想转回我最后检查的功能的一部分,我是否正确地做到了这一点?

因此,在恢复该文件的本地版本后,我是否会丢失所有更改?看起来它将旧版本与我的本地合并,后者有更新的代码...嗯,不完全符合我的预期 .

(是的,我从subversion的文档中读到了它的页面,并且它不是非常清楚或彻底地说明它在技术方面的意义,它们简单地说它处于一个非常顶级的水平并且跳过了你工作中本地实际发生的事情的基础复制)

So lets sum up what I did:

  • 我在一点上检查了一堆变化 .

  • 同事通过svn更新获得更新

  • 我们开会,老板说我们正在剥夺这个功能

  • 该功能大约是该修订版中提交的文件列表的3-4个文件

  • 我想把这些特定文件放在以前的状态......有些文件将被恢复到版本x一些到y等,因为其中一些文件的最后更改是在不同的版本号上完成的 .

  • 所以我从日志开始 . 我找第一个文件 . 让我们称之为somefile1.aspx . 我发现该文件的最新版本已在修订版X中签入 . 因此,我在该修订版的更改集中右键单击它并执行恢复返回修订版

  • 我注意到它实际上合并了那个修订版's code with my local copy?? I think...not sure that'为什么我'm posing because eI don' t了解这一点 .

  • 我为3个以上的文件做同样的事情...查找最后一次提交它们并在特定修订版中右键单击它们并恢复它们的修订...假设这将把我的本地版本放在那里状态也很好,甚至在本地也删除了我对该文件的更改

但是我对这一切感到有些不安和困惑 . 如果我正在接近这个权利,如果我应该使用还原,那么它实际上是在做什么 . 我看到它完成了合并但是什么?我只是想将这4个特定文件放回到以前的状态 . 不是我刚刚提交的那个完整的提交,我在这里开始提到...只是特定的文件与特定的代码区域相关...休息可以保持提交并由任何其他人下载 . 强烈的文本

3 回答

  • 1

    您可能对我刚才对一个非常相似的问题的回答感兴趣:

    How to remove 1 revision of a folder in Subversion

    基本上,您最好的行动计划可能是重新检查上一版本的代码,然后将该代码作为最新版本提交 .

    如果您发现它正在将旧副本与磁盘上的版本合并,则解决此问题的最佳方法是删除本地副本,然后干净地检出文件的指定版本 . 一旦你得到它,你可以重新提交它 .

  • 2

    假设您要还原在修订版1234中所做的更改:只需将1234到1234-1之间的差异合并 .

    在CLI中,这将是: svn merge -r 1234:1233 http://your-repo/ && svn ci

    在TortoiseSVN中,获取合并对话框,“合并一系列修订”,输入1234作为合并的修订版本,然后单击“反向合并” . 然后检查你是否没有遇到任何冲突(其他人在1234之后做了更改),然后办理登机手续 . 然后你的HEAD修订版将没有该代码 .

    我不确定您是否可以在TortoiseSVN中的特定文件上执行此操作 . 我在CLI中做到了,您也可以尝试(CLI工具,TortoiseSVN,AnkhSVN,它们都共享元数据) .

    SVN仍然会记住你已经编写了这段代码,而这正是它的设计目标 . 如果没有真正的理由从SVN中删除此代码(例如,合法或勒索或其他),请保留它 .

  • 2

    coffeeaddict-

    revertupdate 在这里都是误导性的术语 . 你这两个都没做 . 你是"reverse merging"变化 .

    您可以将反向合并视为执行相反的更改...因此,如果修订版向文件添加了一行,则反向合并该更改将从文件中删除该行 .

    在TortoiseSVN中,你的方式是:

    • 从您更新的工作副本开始

    • 拉起日志

    • 单击包含要回滚的更改的修订

    • 右键单击要回滚的文件,然后选择“还原此版本中的更改”

    • 对每个要回滚的文件重复步骤4

    • 您将看到这导致对工作副本中的这些文件进行本地修改 . 这就是你想要的;就像你通过手动编辑文件来解除更改一样 . 但是,在您回滚之后发生的修订中,您不会丢失任何更改 .

    • 解决出现的任何冲突

    • 承诺

    现在,您只撤消了在该修订版本中发生的更改,而不会丢弃您希望保留的任何更改 .

相关问题