如何将错误的代码(错误地提交)替换到存储库中

时间:2010-10-15 19:26:04

标签: svn

我是svn的新手,我在错误后陷入困境。

我有两个系统:

a)系统1 - 使用正确代码的工作副本

b)系统2 - 错误代码的工作副本,错误地提交到存储库

我想从系统1重新提交正确的代码,但我不能。如果我更改文件并尝试提交,我会收到消息:

文件xyx已过期

显然我无法更新系统1工作副本,否则我会丢失正确的代码。

如何退出此死锁?

谢谢

的Fab。

6 个答案:

答案 0 :(得分:6)

这是一篇关于如何使用Subclipse撤消提交的文章:

How to undo a commit

基本上,您打开历史记录视图,选择错误的修订版并使用上下文菜单(来自文章)将其还原:

alt text

您可以使用 svn info / log / merge 从命令行撤消提交。以下是一篇简短的文章:svn undo from command line

答案 1 :(得分:2)

使用还原。您可以将文件还原为您认为合适的修订版。然后将该文件提交为新修订版。请务必恢复修订而不是更新到修订。

答案 2 :(得分:2)

要还原您在修订版10中错误提交的代码:

svn update
svn merge -r10:9 .
svn commit -m'reversing commit made by mistake in -r10'

现在,如果您想要恢复该代码,但保持未提交(可能要编辑它然后重新提交):

// this assumes that the reversal committed above was -r11.
svn update
svn merge -r11:10 .

答案 3 :(得分:0)

将1的代码复制并粘贴到临时位置。

更新1。

将1的代码替换为临时位置。

提交1。

更新2。

答案 4 :(得分:0)

将工作代码从系统1复制到系统2,然后提交。

答案 5 :(得分:0)

保存正确代码的副本。更新您的工作系统以使用错误代码,因此现在工作系统是“当前”。添加更改以使代码更好(可能只是将其复制回原位)。提交代码的良好副本作为下一个版本。

请记住,变化只是一种变化,无论好坏。关键是不要在shuffle中丢失好的代码副本。还有其他方法,但基本思路是一样的:

  1. 让您的代码保持最新状态(从而获取不良副本)。
  2. 将其修改为战斗(从而恢复好副本)。
  3. 提交您的更改(从而为每个人恢复好的副本)。