如何在SVN上强制使用本地版本作为最新版本

pan*_*chk 5 svn merge

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

我在本地的版本正是我希望在存储库中作为头版本,即使一些文件仍然正式在"版本1".我假设我应该以某种方式使用SVN合并,但我不确定如何做到这一点.有什么建议?

编辑:当我使用diff时,它显示从本地版本到rep版本的更改.我可以做更新,但之后我会在本地再次使用非工作版本.所以我想要的是某种强制提交,只是说"这是最新版本,期间".

edit2:执行"提交"时,SVN报告没有更改.感谢Neil Butterworth的提问.

编辑3:我最终做了什么,仅供参考:我应该使用蒂姆的建议,但我傻到做更新而没有真正考虑我在做什么.当然,一切都被搞砸了,无法修复.所以我最终做的是将项目导出到一个新目录.这显然不是你应该这样做的方式,但我不想再惹这个东西了.最后我不得不回到实际项目的实际进展;-)我知道当我在一个更大的团队工作时,我不能做那样的事情,但我不是:)

Tim*_*Tim 9

蛮力方式:

  1. 制作本地文件的副本.
  2. 删除所有目录中的所有.svn文件
  3. 查看HEAD版本.
  4. 将本地文件复制到签出的HEAD上.
  5. 将本地文件检入存储库.

如果您正确执行了此操作,SVN客户端应将更改的文件解释为存储库的更新.但是,这将覆盖您可能想要保留的其他人所做的任何更改.如果要保留这些更改,请在进行最终提交之前先对所有文件执行diff操作并合并所有最近的更改.

反向合并回原始版本:

  • 对于每个更改的文件,
    1. 比较差异,记录要保留的更改,并相应地更改本地副本.
    2. 制作本地文件的副本.
    3. 将HEAD反向合并回所需的原始版本.
    4. 将本地文件的副本粘贴到合并的本地副本上.(首先删除.svn)
    5. 承诺

除非您只是将所有内容还原而不检查任何更改,否则这可能更加手动.

Subversion,AFAIK,还没有提供删除命令,因此所有更改总是发生在HEAD的本地副本上.

还原只是反向合并,所有合并始终发生​​在本地副本上.在理想的系统中,将跟踪合并,但Subversion不跟踪合并信息,因此您不妨执行方法1,只需在提交日志中进行注释即可.

要查找的一些网址: