svn - 如何强制本地版本为 SVN 上的最新版本

标签 svn merge

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

我本地拥有的版本正是我想要在存储库中作为头修订版的版本,即使某些文件仍然正式位于“版本 1”上。我认为我应该以某种方式使用 SVN 合并,但我不太确定该怎么做。有什么建议吗?

编辑:当我使用 diff 时,它显示从本地版本到代表版本的更改。我可以进行更新,但随后我会在本地再次获得无法正常工作的版本。所以我想要的是某种强制提交,只是说“这是最新版本,句号”。

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

edit3:我最后做了什么,仅供引用:我应该只使用蒂姆的建议,但我很愚蠢,没有真正考虑我在做什么就进行了更新。当然,一切都已经变得一团糟,无法修复了。所以我最终所做的就是将项目导出到一个新目录。这显然不是你应该做的事情,但我不想再搞乱这些东西了。最后,我必须重新开始在实际项目上取得实际进展;-) 我知道当我在一个更大的团队中工作时我不能做这样的事情,但我不是:)

最佳答案

暴力破解方式:

  1. 复制本地文件。
  2. 删除所有目录下的所有.svn文件
  3. 查看 HEAD 版本。
  4. 将本地文件复制到 checkout 的 HEAD 上。
  5. 将本地文件重新检入存储库。

如果您操作正确,SVN 客户端应将更改的文件解释为存储库的更新。然而,这将覆盖您可能想要保留的其他人所做的任何更改。如果您想保留这些更改,请先对所有文件进行比较,并合并所有最近的更改,然后再进行最终提交。

反向合并回原始版本:

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

这可能需要更多的手动操作,除非您只是将所有内容恢复回来而不检查任何更改。

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

恢复只是反向合并,所有合并始终发生​​在您的本地副本上。在理想的系统中,合并会被跟踪,但 Subversion 不会跟踪合并信息,所以你不妨采用方法 1,只在提交日志中进行注释。

一些要查找的网址:

关于svn - 如何强制本地版本为 SVN 上的最新版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/665644/

相关文章:

git - 通过 url 在 vi​​sual svn 中突出显示/导航行号

svn - 我是否需要使用 Subversion 手动创建主干/和分支/文件夹,或者这些文件夹是他们自己创建的?

vba - Excel 2007 宏移动重复项

git - 还原推送的 merge 后无法将主分支 merge 到功能分支

string - 通过保持相同序列合并相似文本的算法(例如 : deduplicate log file)

java - 在 Netbeans 中 react 包后,我无法再提交

svn - 如何跳过 svnsync 同步中的初始修订(以修复损坏的存储库)

svn - 将 Subversion 集成到具有简单文件存档的应用程序中是否有点过分?

python - Pandas Left Merge 与 xlsx 和 CSV 在输出中生成空值列

r - 如果每个数据集中的列具有不同的名称,如何将两个数据框合并到一列上?