如何在SVN上强制您的本地版本为最新版本

如何在SVN上强制您的本地版本为最新版本,svn,merge,Svn,Merge,我做了一些更改并提交(到版本2),几分钟后发现它们给我的程序引入了新的bug。因此,我将一些文件切换到旧版本,以便在本地平台上将一些文件恢复到版本1。从那以后,我做了很多我不想丢失的更改,我使用commit(版本3)在服务器上获取本地更改 我在本地拥有的版本正是我希望作为head修订版出现在存储库中的版本,尽管有些文件仍然在“version 1”上。我想我应该以某种方式使用SVN merge,但我不确定该怎么做。有什么建议吗 编辑:当我使用diff时,它显示从本地版本到rep版本的更改。我可以做

我做了一些更改并提交(到版本2),几分钟后发现它们给我的程序引入了新的bug。因此,我将一些文件切换到旧版本,以便在本地平台上将一些文件恢复到版本1。从那以后,我做了很多我不想丢失的更改,我使用commit(版本3)在服务器上获取本地更改

我在本地拥有的版本正是我希望作为head修订版出现在存储库中的版本,尽管有些文件仍然在“version 1”上。我想我应该以某种方式使用SVN merge,但我不确定该怎么做。有什么建议吗

编辑:当我使用diff时,它显示从本地版本到rep版本的更改。我可以做更新,但我会有一个非工作版本在本地再次。所以我想要的是某种强制提交,只是说“这是最新版本,句号”

edit2:执行“提交”时,SVN报告没有更改。感谢尼尔·巴特沃斯的提问

edit3:我最终做了什么,仅供参考:我本应该使用Tim的建议,但我太傻了,没有真正考虑我在做什么就更新了。当然,当时一切都乱七八糟,无法修复。所以我最后做的是将项目导出到一个新目录。这显然不是你应该做的,但我不想再搞砸这件事了。最后,我不得不在实际项目上取得实际进展;-)我知道当我在一个更大的团队工作时,我不能做这样的事情,但我不是:)

暴力方式:

  • 制作本地文件的副本
  • 删除所有目录中的所有.svn文件
  • 检查头部版本
  • 将本地文件复制到签出的标头上
  • 将本地文件签回存储库
  • 如果操作正确,SVN客户端应将更改的文件解释为对存储库的更新。但是,这将覆盖其他人所做的您可能希望保留的任何更改。如果要保留这些更改,请先对所有文件进行区分,并合并所有最近的更改,然后再进行最终提交

    反向合并回原始版本:

    • 对于每个更改的文件,
    • 比较差异,注意要保留的更改,并相应地更改本地副本
    • 制作本地文件的副本
    • 将合并头反转回所需的原始版本
    • 将本地文件的副本粘贴到合并的本地副本上。(先删除.svn)
    • 承诺
    这可能更像是手动操作,除非您只是在不检查任何更改的情况下恢复所有内容

    Subversion,AFAIK,还没有提供删除命令,所以所有的更改总是发生在头部的本地副本上

    还原回只是一个反向合并,所有合并总是发生在本地副本上。在理想的系统中,合并将被跟踪,但Subversion不会跟踪合并信息,因此您最好执行方法1,并在提交日志中进行注释

    要查找的一些URL:


      • 这里有两种可能性:

        • 实际上,您切换到了回购协议的前一个版本,因此您使用了第1个版本
        • 或者在版本2上签出文件的旧版本,对其进行更改并作为新版本提交
        在任何情况下,如果您成功地提交了更改,那么服务器上就应该这样做

        但是,如果您不确定,我建议您:

        • 保留当前文件的备份
        • 查看回购协议的新副本
        • 如果你看到它和你的副本是一样的,那就别无选择了
        • 如果没有,请使用备份覆盖新副本中的所有文件(隐藏的.svn文件夹除外!)
        所以我换了一些文件 一个旧版本,以获得一些 文件返回到我的本地服务器上的版本1 站台


        相反,您应该恢复特定版本的更改。此后,您应该仍然能够更新和恢复该修订版中的更改。

        提交更改时会发生什么?它显示:无更改。好问题,如果没有别的办法,那就是B计划。但这需要相当多的体力劳动。我更喜欢用更聪明的方式做;-)这不是真正的手册。我以前做过很多次。假设使用windows,则选择全部、复制、粘贴到其他位置。搜索所有.svn,删除。更新到head。复制旧版本,粘贴回。在我看来,这不是正确的解决方案。你应该听从苏玛的回答。请记住,只有当文件的本地版本等于头部版本时,才能提交文件。因此,您可以通过合并回不需要的commit.True来撤消更改,但前提是文件数量很小。别忘了,他把旧文件和修改过的文件都混在一起了。确定要还原的内容将是非常手动的。此外,如果其他开发人员做出了良好的更改,则恢复将消除这些更改,而没有机会修复冲突。如果其他开发人员更改了某些内容,则按照您的建议将覆盖这些更改。我建议只恢复有问题的提交。不管他会采取什么样的解决方案,他最好在做出承诺之前仔细看看差异。这对我来说比公认的答案更有意义。我自己也做过几次。