我的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.”那么我的命令错了,还是这个想法错了? (如果是的话,为什么?)
答案 0 :(得分:73)
如果你的回购在修订版497处于原始状态,那么我认为你是对的,你需要做一个:
svn merge -r HEAD:497 .
该merge命令只会更改工作副本中的文件,因此请记住还要提交更改以更新repo中的HEAD。
在进行合并,然后进行提交后,尝试将版本497与HEAD进行比较,它们应该相同。
答案 1 :(得分:22)
如果要撤消r123,则需要svn merge -r 123:122 .
这意味着您需要运行
svn merge -r HEAD:497 .
验证运行:
svn diff -r 497
答案 2 :(得分:4)
答案 3 :(得分:4)
对于任何使用TortoiseSVN的人,你只需要显示"显示日志N#34;对话框从那里恢复提交:
http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-howto-rollback.html
答案 4 :(得分:1)
要退出不希望的更改(也许您提交了其中包含调试语句的其他文件,以及您确实要提交的内容),请说错误的更改是-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
答案 5 :(得分:0)
如果您想快速可靠地回滚到特定版本,那么只需查看旧版本的存储库。
运行svn info
以提醒自己存储库的URL是什么,然后创建一个新文件夹并检查所需的修订版本:
cd <your new folder>
svn checkout <URL> -r 497 .
然后,您可以针对现有文件夹区分该文件夹,如果需要,可以从那里将整个修订版提交回存储库。
答案 6 :(得分:0)
答案 7 :(得分:0)
考虑HEAD:150恢复r1 = 100和r2 = 90
注意:这些更改将不还原 EXTERNALS文件夹!
答案 8 :(得分:0)
在SVN中反向合并
SVN会将公用文件的内容保留在特定的工作副本中 文件的修订和工作副本的HEAD修订。
如果它是文件夹级别