我找到了各种关于如何恢复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.
------------------------------------------------------------------------

其他回答

F=code.c
REV=123
svn diff -c $REV $F | patch -R -p0 \
    && svn commit -m "undid rev $REV" $F

首先,撤销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.
------------------------------------------------------------------------

如果您使用的是TortoiseSVN客户端,则可以通过显示日志对话框轻松完成。

Alex,试试这个:svn merge [WorkingFolderPath] -r 1944:1943

两个例子都必须成立,但是

svn merge -r UPREV:LOWREV。撤销范围

svn merge -c -REV。撤消单个修订,在您的情况下REV将是1944,即您希望撤消的修订。

在这个语法中,如果当前目录是WC并且(在每次合并后必须完成)你将提交结果

您想查看日志吗?