如何在 SVN 中将文件恢复到旧版本

如何在 SVN 中将文件恢复到旧版本

在我的工作中,我们使用 svn。我在 Windows PC 上使用 tortoisesvn 作为 Windows shell/explorer 扩展。我在 svn 中维护一个 *.c 源文件。我的一位同事在我的版本的基础上做了一些更改并签入,但他没有完全测试他的所有更改!因此,现在的代码在某些测试用例中被破坏了。他说他在 svn 中签入更改时没有正确合并它,因此出现了这种破坏。随便吧!还有其他团队更新了这个文件,所以这会破坏他们的工作。

  1. 将此特定文件恢复为较旧的工作版本的命令是什么?(他在本地进行了更改,因此我不会为此烦恼)

  2. 如果没有直接命令来执行此操作,我现在该如何摆脱这种困境。

  3. 当我阅读时,我听说了“反向合并”。那到底是什么?它对我有帮助吗?如果有帮助,那如何帮助?

答案1

这是反向合并。它将帮您实现您想要的结果。

  1. 将错误的修订与您想要的修订合并到您的工作副本路径中。
  2. 测试代码
  3. 将文件提交回存储库

现在您将拥有一个已修复的修订版,但在存储库中保留了损坏的修订版。

合并命令有三个参数:第一个源、第二个源、工作副本路径。由于您正在回滚,因此两个源将具有相同的路径,但修订号不同。修订号较高的将优先。

命令行示例:

merge svn://example.com/repo/folder/changedFile.txt@HEAD svn://example.com/repo/folder/changedFile.txt@215 ./folder/changedFile.txt

使用 TortoiseSVN 中的“显示日志”按钮可以轻松找到修订版本。

答案2

您还可以通过右键单击“日志消息”窗口中的文件名来反向合并单个文件。

答案3

在提交信息的指导下,您应该能够下载文件的先前修订版本,该修订版本不包含破坏文件的更改。

当然,您最后一次签入的内容包含文件的正确且有效的版本,当您合并时,您通常使用两个源来生成一个新的版本,要么是工作副本,要么是两个独立的分支,因此,您的朋友所做的只是创建一个新的修订版。

从您上次签入时下载文件,该文件应包含更改前的最后一个工作代码。T​​ortoiseSVN 允许您通过指定修订号“签出”来执行此操作,也许您需要探索存储库(使用 TortoiseSVN 存储库资源管理器)并确定所需的修订号。

这是我做事的方法,以前对我来说很有效:)

希望这可以帮助。

答案4

TortoiseSVN 可以为您执行反向合并。转到 SVN 项目的日志页面,右键单击要更改的修订版本,然后选择“恢复”。

相关内容