SVN 反向合并?

我的 SVN 存储库在497修订版时是完美的。我执行了几次错误的提交,所以现在是在修订 HEAD。我发现要回滚,应该使用如下命令:

svn merge -r HEAD:497 .

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

我是不是遇到了什么栅栏柱的问题,比如 HEAD: 497实际上变成了496什么的?或者是当我更新时,SVN 回到每个修订,尽管事实上 HEAD 和497是相同的?

编辑:

只是为了澄清,正如我前面所说的,当我在497和我合并的 HEAD 之间更新时,我看到很多文件变化发生。我认为,如果497和 HEAD 是相同的,它将检测到这一点,并且不会发生文件更改; 它将简单地说: “更新到修订497。”那么是我的命令错了,还是这个想法错了?(如果是这样,为什么?)

101515 次浏览

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

这意味着你得逃跑

svn merge -r HEAD:497 .

验证 run:

svn diff -r 497

要退出一个不想要的更改(也许您提交了其他包含调试语句的文件,以及您确实想要提交的内容) ,假设坏的更改是-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

如果你的回收材料在497修订版时是完好无损的,那么我认为你是对的,你需要做一个:

svn merge -r HEAD:497 .

这个 merge 命令只会更改工作副本中的文件,所以记住还要提交更改以更新回购中的 HEAD。

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

如果您想要一种快速可靠的方法来回滚到特定的修订,那么只需检查存储库的旧版本即可。

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

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

然后,您可以将该文件夹与现有文件夹进行区分,如果需要,还可以将整个修订版提交回存储库。

对于任何使用 TortiseSVN 的人来说,你只需要打开“ Show Log”对话框就可以从这里恢复提交:

Http://tortoisesvn.net/docs/release/tortoisesvn_en/tsvn-howto-rollback.html

考虑 HEAD: 150还原 r1 = 100和 r2 = 90

  1. 快点
  2. Svn 合并-r 100:99
  3. Svn 合并-r 90:89

注意: 这些更改将 而不是回头外部文件夹!

在 SVN 中反向合并

  • 如果是文件级别
  • SVN 将在特定的 修改档案和工作副本的 HEAD 修改。

  • 如果是文件夹级别

  • 在 SVN 反向合并中,如果没有在特定的修订中找到文件,则 保持工作副本的原样。