我找到了各种关于如何恢复SVN提交的示例,例如
svn merge -r [current_version]:[previous_version] [repository_url]
or
svn merge -c -[R] .
但这两种方法似乎都不管用。我尝试了这些命令,并检查了手动更改的文件。
如何恢复修订号为1944的提交?我如何检查恢复已经完成(没有在实际文件中查看已恢复的更改)?
我找到了各种关于如何恢复SVN提交的示例,例如
svn merge -r [current_version]:[previous_version] [repository_url]
or
svn merge -c -[R] .
但这两种方法似乎都不管用。我尝试了这些命令,并检查了手动更改的文件。
如何恢复修订号为1944的提交?我如何检查恢复已经完成(没有在实际文件中查看已恢复的更改)?
当前回答
首先,撤销1944年修订中所做的更改。
> svn merge -c -1944 .
其次,检查将要提交的内容。
> svn status
第三,提交1945版本。
> svn commit -m "Fix bad commit."
第四,查看新的日志。
> svn log -l 4
------------------------------------------------------------------------
1945 | myname | 2015-04-20 19:20:51 -0700 (Mon, 20 Apr 2015) | 1 line
Fix bad commit.
------------------------------------------------------------------------
1944 | myname | 2015-04-20 19:09:58 -0700 (Mon, 20 Apr 2015) | 1 line
This is the bad commit that I made.
------------------------------------------------------------------------
1943 | myname | 2015-04-20 18:36:45 -0700 (Mon, 20 Apr 2015) | 1 line
This was a good commit.
------------------------------------------------------------------------
其他回答
SVN merge -r 1944:1943。应该恢复工作副本中r1944的更改。然后,您可以检查工作副本中的更改(使用diff),但您需要提交才能将恢复应用到存储库中。
“取消提交”修订是不可能的,但是您可以将工作副本恢复到1943版本,并将其提交为1945版本。1943年和1945年的版本将是相同的,有效地恢复了变化。
两个例子都必须成立,但是
svn merge -r UPREV:LOWREV。撤销范围
svn merge -c -REV。撤消单个修订,在您的情况下REV将是1944,即您希望撤消的修订。
在这个语法中,如果当前目录是WC并且(在每次合并后必须完成)你将提交结果
您想查看日志吗?
首先,撤销1944年修订中所做的更改。
> svn merge -c -1944 .
其次,检查将要提交的内容。
> svn status
第三,提交1945版本。
> svn commit -m "Fix bad commit."
第四,查看新的日志。
> svn log -l 4
------------------------------------------------------------------------
1945 | myname | 2015-04-20 19:20:51 -0700 (Mon, 20 Apr 2015) | 1 line
Fix bad commit.
------------------------------------------------------------------------
1944 | myname | 2015-04-20 19:09:58 -0700 (Mon, 20 Apr 2015) | 1 line
This is the bad commit that I made.
------------------------------------------------------------------------
1943 | myname | 2015-04-20 18:36:45 -0700 (Mon, 20 Apr 2015) | 1 line
This was a good commit.
------------------------------------------------------------------------
如果您希望完全从历史记录中删除提交,还可以在特定修订时转储回购,然后导入该转储。具体地说:
svnrdump dump -r 1:<rev> <url> > filename.dump
svndump命令与svnadmin dump功能相同,但工作在远程repo上。
接下来,只需将转储文件导入您所选择的回购。这种方法在《豆茎》上被测试效果很好。