首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在svn中恢复到未实现的版本

如何在svn中恢复到未实现的版本
EN

Stack Overflow用户
提问于 2014-05-06 13:29:42
回答 2查看 47关注 0票数 1

我有个问题。当我更新我的代码时,发生了冲突,不幸的是,我没有提交该代码就将该文件恢复到以前的版本。我失去了3到4天的工作。有没有可能得到那些没有提交给svn但刚刚被svn修改的代码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-06 15:09:36

对不起,当您恢复更改时,您可以做的不多。你基本上是让Subversion把所有东西都毁了。顺便说一句,与其他人提到的不同,使用分布式版本控制系统是没有帮助的。如果有人更新了您曾经处理过的远程存储库中的一个文件,您就不能将更改推送到远程存储库,而不首先提取它们的更改。(您可以创建分支并推送更改,但也可以对Subversion进行同样的操作。)

这是与一个团队合作的诅咒,也是版本控制系统多年来一直在努力解决的问题。基本上,如果您和其他人更改了同一个文件,您需要确保在签入之前将其他人的更改合并到您的版本中。否则,他们的变化将失去。

通常,Subversion可以在没有问题的情况下进行更新(尽管您应该进行测试,以确保您的更改将与更新的文件版本一起工作)。那么,如果在更新过程中发生冲突,您应该怎么办?

别吓着你!看看冲突信息,看看它说了些什么。很多时候,它类似于您删除的文件的传入更新,或对您更新的文件的删除。这些通常不是太多的问题,您可以使用svn resolved将情况标记为已解决。有时,这是一个单一文件中的行冲突。看看这场冲突。Subversion用>>>>>><<<<<<<标记它们。在大多数情况下,这是很容易解决的问题。您添加了foo = bar,他们添加了snafu = bloop,您确实需要这两行代码。有时,这是一种行距冲突。他们恢复了档案,没有任何冲突。仅仅因为一场冲突被报道并不意味着真的有冲突。

在最坏的情况下,只需签出一个新的工作副本并使用它。但是,如果这样做,请在新的工作副本上盲目地复制已更改的文件,因为这样会破坏其他人的更改。

您可以始终创建分支并将代码提交到该分支,并在稍后解决问题。这是支行的好理由之一。

无论你做什么,都不要回头,失去所有的工作。

最后一次机会。

你用带时间机器的Mac吗?我也理解Windows的新版本也是版本文件。您可能可以使用版本化的备份来返回您的更改。

如果没有别的..。

把它看作是一个机会。当我还是一个程序员的时候,事情总是会发生,我会失去大量的工作,我不得不从头开始。通常发生的情况是,我第二次编写了更好的代码。我对这个问题比较熟悉。我知道让我如此悲伤的陷阱。

有时候,当我在编程的时候,我可以选择两条路之一。几天后,我意识到我选择的道路是错误的,我一直往下推,因为我已经花了很多时间在这个项目上。当我处理这些问题时,代码变得越来越丑陋。我会诅咒自己做出了错误的决定,但我必须接受它。

失去一切让我可以做不同的事情。你曾经解决过这个问题,你知道是什么起了作用,什么地方出了问题。你花了四天的时间工作,但很可能一天内你可以重新做很多工作,而这一次,你做的很好。

票数 1
EN

Stack Overflow用户

发布于 2014-05-06 13:31:25

不,如果您有从未提交过的本地更改,并且您恢复了文件,那么这些更改将不幸地丢失。

我想添加这个作为评论,但它太长了。

避免这种事情在将来发生的最好的做法是使它成为一种习惯,经常地,一天几次。如果您正在进行的更改范围更大,并导致构建失败,则创建一个分支并在那里提交您的工作进度,直到我准备好将其合并回主干为止。但是,不要在没有提交代码的情况下工作很长时间。事故可能发生,失去几天的工作可能会令人疯狂的沮丧!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23496118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档