SVN反向合并?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVN反向合并?相关的知识,希望对你有一定的参考价值。

我的SVN存储库在修订版497中是完美的。我执行了几次不良提交,所以现在它处于修订版HEAD。我看到要回滚你应该使用这样的命令:

svn merge -r HEAD:497 .

在工作目录中(工作目录是HEAD修订版)。但这是正确的命令吗?或者我使用HEAD:498?还是496?我已经运行了该命令,当前版本似乎与497不同,因为当我更新-r 497(或者当我有497个工作副本并且我更新-r HEAD)时,会发生大量文件更新。

我是否有某种fencepost问题,其中HEAD:497实际上恢复到496,或者其他什么?或者,当我更新时,尽管HEAD和497是相同的,但SVN会追溯到每个版本?

编辑:

只是为了澄清,正如我早些时候在497和我合并的HEAD之间更新时说的那样,我看到发生了很多文件更改。我认为如果497和HEAD相同,它会检测到,并且不会发生文件更改;它只会说“更新到修订版497.”那么我的命令错了,还是这个想法错了? (如果是的话,为什么?)

答案

如果你的回购在修订版497处于原始状态,那么我认为你是对的,你需要做一个:

svn merge -r HEAD:497 .

该merge命令只会更改工作副本中的文件,因此请记住还要提交更改以更新repo中的HEAD。

在进行合并,然后是提交之后,尝试将版本497与HEAD进行比较,它们应该是相同的。

另一答案

如果你想撤消r123,你需要svn merge -r 123:122 .

这意味着你需要运行

svn merge -r HEAD:497 .

要验证运行:

svn diff -r 497
另一答案

这有帮助吗?

http://svnbook.red-bean.com/en/1.1/ch04s04.html#svn-ch-4-sect-4.2

另一答案

对于使用Tortoise SVN的任何人,您只需调出“显示日志”对话框即可恢复提交:

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-howto-rollback.html

另一答案

要退出不希望的更改(也许您提交了其中包含调试语句的其他文件,以及您确实要提交的内容),请说错误的更改是-r10:

svn update
svn merge -r10:9 <URL of your repository base> .

现在您可以只返回您想要提交的文件:

svn update
svn update -r10
svn commit <just that one file>   # this is the command you meant to type from the beginning
另一答案

如果您想要快速可靠地回滚到特定修订版,那么只需查看存储库的旧版本。

运行svn info以提醒自己存储库URL是什么,然后创建一个新文件夹并检出所需的修订:

cd <your new folder>
svn checkout <URL> -r 497 .

然后,您可以针对现有文件夹区分该文件夹,如果需要,可以从那里将整个修订版提交回存储库。

另一答案

你需要这个http://phpcollection.com/revert-files-to-older-svn-version/

另一答案

考虑HEAD:150恢复r1 = 100和r2 = 90

  1. svn up
  2. svn -r 100:99
  3. svn go -r 90:89

注意:这些更改不会还原EXTERNALS文件夹!

以上是关于SVN反向合并?的主要内容,如果未能解决你的问题,请参考以下文章

如何利用SVN合并代码

有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]

Eclipse 中svn的合并与同步

svn建立分支和svn代码合并的操作方法

SVN建立分支和合并代码

svnkit——svn二次开发背景和闲谈