首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DVCS和数据丢失?

DVCS和数据丢失?
EN

Stack Overflow用户
提问于 2009-07-24 15:13:11
回答 3查看 226关注 0票数 5

在使用DVCS近两年后,似乎一个固有的“缺陷”是意外的数据丢失:我丢失了不是推送的代码,我知道其他人也是这样。

我能看到这样做的几个原因:没有内置异地数据复制(即,“提交必须转到远程主机”),存储库与代码位于同一目录中,并且“黑客”的概念很流行,直到你有东西要发布……但这不是重点。

我很好奇:您是否经历过与DVCS相关的数据丢失?或者您是否一直在使用DVCS而没有遇到问题?而且,与此相关的是,除了“记得经常推”之外,还有什么可以做的来将风险降到最低吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-07-25 02:04:29

我在一个集中的VCS中处理未提交的更改,然后决定我确实需要它们,这比我在DVCS中做的任何事情都要多。部分原因是我已经使用CVS快十年了,而git还不到一年,所以我有更多的机会遇到集中式模型的麻烦,但这两种模型之间的工作流属性的差异也是主要的因素。

有趣的是,大多数原因归结为“因为它更容易丢弃数据,我更有可能保留它,直到我确定我不想要它”。(丢弃数据和丢失数据之间的唯一区别是您打算丢弃它。)最大的因素可能是我的工作流习惯的怪癖-当我使用DVCS时,我的“工作副本”通常是分布在多台计算机上的几个不同的副本,所以在一个存储库中损坏或丢失,甚至是我一直在处理的计算机上的灾难性数据丢失,都不太可能破坏数据的唯一副本。(能够做到这一点是分布式模型相对于集中式模型的一大胜利-当每次提交都成为存储库的永久部分时,复制试探性更改的心理障碍要高得多。)

就最小化风险而言,养成将风险最小化的习惯是可能的,但你必须养成这些习惯。这里有两个一般原则:

只有在不同位置存在

  • 数据的多个副本后,该数据才会存在。有一些工作流习惯会让你免费获得多份拷贝--例如,如果你在两个不同的地方工作,你就有理由在每次工作结束时推送到一个共同的位置,即使它还没有准备好发布。
  • 不要试图做任何聪明、愚蠢或超出你的舒适区的事情,只引用你可能想要保留的提交。创建可恢复到的临时标记,或创建临时分支以在其上执行操作。(git的reflog允许您在事后恢复旧的引用;如果其他DVCS具有类似的功能,我也不会感到惊讶。因此,手动标记可能不是必需的,但不管怎样,它通常更方便。)
票数 2
EN

Stack Overflow用户

发布于 2009-07-24 15:18:30

我从DVCS中丢失了数据,这既是因为删除了树和存储库(不记得它有重要的信息),也是因为使用DVCS命令行(在特定情况下是git)的错误:一些旨在恢复我所做的更改的操作实际上从存储库中删除了许多已经提交的修订。

票数 3
EN

Stack Overflow用户

发布于 2009-07-25 02:29:00

在分发和确保所有内容都“保存”之间存在内在的紧张关系(潜在的假设是保存就意味着备份到其他地方)。

如果您同时在多台计算机上的同一行工作(或者更确切地说,是几个存储库:例如,我经常需要在同一台计算机上的多个VM之间共享更改),这才是一个真正的问题。在这种情况下,“集中式”工作流将是理想的:您将设置一个临时服务器,并在某些给定的分支上使用集中式工作流。据我所知,目前的DVCS (git/bzr/hg)都不能很好地支持这一点。不过,这将是一个很好的特性。

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

https://stackoverflow.com/questions/1178325

复制
相关文章

相似问题

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