我为什么要使用版本控制?

Jas*_*vis 120 svn git cvs version-control

我正在读一篇博客,作者说这个

"代码不存在,除非它被检入版本控制系统.对你所做的一切使用版本控制.任何版本控制,SVN,Git,甚至CVS,掌握它并使用它."

我从来没有使用任何类型的版本控制,我觉得它不是很好.我之前用Google搜索并查看过它,但如果你愿意的话,我只需要将它用于孩子们的条款.

正如我现在所理解的那样,像SVN这样的东西用于在线存储你的代码,供一组用户或其他开发人员访问相同的代码.更新一些代码后,您可以提交新版本,SVN将保留旧代码的副本以及您更新的新代码.

这是它的基本概念还是我完全错了?

如果我是对的,那么如果我:

  • 没有其他人在处理代码.
  • 不要打算让其他人拥有代码.

si6*_*618 255

你有没有:

  • 对代码进行了更改,意识到这是一个错误并希望恢复原状?
  • 丢失的代码或备份太旧了?
  • 不得不维护产品的多个版本?
  • 想要查看代码的两个(或更多)版本之间的区别?
  • 想要证明一个特定的变化破坏或修复了一段代码?
  • 想要复习一些代码的历史?
  • 想要改变别人的代码?
  • 想要分享您的代码,还是让其他人处理您的代码?
  • 想看看做了多少工作,在哪里,何时以及由谁做?
  • 想要在不干扰工作代码的情况下尝试新功能吗?

在这些情况下,毫无疑问,其他版本控制系统应该让您的生活更轻松.

错误引用朋友:文明时代的文明工具.

  • 这家伙已经钉了它.即使我单独处理项目,我也希望运行一些版本控制.Perforce为2位用户提供的功能齐全的演示非常适合. (20认同)
  • 好点.但是,请注意**版本控制不是备份!**备份存储在单独的系统/介质上,并保留旧备份一段时间(以防万一您的存储库被搞砸了). (7认同)
  • 你好蒂姆,你如何追踪你的变化历史?如何将更改历史记录链接到问题跟踪器或发布说明?如何管理合并代码的不同分支?您如何找到您在过去100个版本中所做的更改?也许如果您单独编码,或者从不担心为什么更改代码,那么可能只是备份就足够了,但我敢打赌,一旦您使用了体面的VCS,您就会明白为什么这么多人使用它们. (7认同)
  • 听起来很有用..直到我必须学习并掌握它.嘿嘿 (3认同)

R. *_*des 55

即使您单独工作,您也可以从源代码管理中受益.其中,由于以下原因:

  • 你不会失去任何东西.我再也没有注释过代码.我只是删除它.它不会弄乱我的屏幕,也不会丢失.我可以通过查看旧提交来恢复它.

  • 你可以随便试验.如果它没有解决问题,请将其还原.

  • 您可以查看以前版本的代码,以了解引入错误的时间和位置.git bisect在这方面很棒.

  • 更多"高级"功能(如分支和合并)可让您拥有多条平行的开发线.您可以在没有干扰的情况下同时使用两个功能,并且可以毫不费力地来回切换.

  • 你可以看到"改变了什么".这可能听起来很基本,但这是我发现自己经常检查的东西.我经常开始我的单人工作流程:我昨天做了什么?

继续尝试吧.从基本功能开始慢慢开始,随时学习其他功能.你很快就会发现你不会想要回到没有VCS的"黑暗时代".

如果你想要一个本地VCS,你可以设置自己的subversion服务器(我过去做过的),但今天我建议使用git.更简单.只需cd到您的代码目录并运行:

git init
Run Code Online (Sandbox Code Playgroud)

欢迎来到俱乐部.

  • 从不评论代码的子弹+1 (5认同)
  • @jasondavis回答您的具体问题(即使您现在可能已经知道了),您可以在本地使用任何*distributed*VCS(git,mercurial等),而无需服务器.您也可以在本地使用*集中式*VCS(CVS,SVN等),但设置起来会更烦人,并且不会带来太多好处.无论您使用哪种VCS,您都可以将它放在服务器上,但仍然没有公开(对于在计算机之间传输和提供另一个备份很有用) - 搜索"私有存储库".你不能在git中使用TortoiseSVN,但那里有一个Tortoise-Git. (2认同)

Rob*_*les 18

版本控制是一种罕见的工具,我认为这是绝对必需的,即使您只是将它作为独立开发人员使用.有些人说这是你生活和死亡的工具,我同意这个说法.

您现在可能正在使用版本控制,即使您不知道它.你有任何文件夹内容,例如"XXX Php Code(December)"或"XXX.php.bak.2"吗?这些版本控制的形式.一个好的版本控制系统会自动为您解决这个问题.您将能够回滚到任何时间点(您已签入数据)并能够查看该数据的精确副本.

此外,如果您采用类似subversion的系统,并使用远程存储库(例如您拥有的服务器上的存储库),您将有一个地方可以保留所有代码.需要在其他地方复制您的代码吗?没问题,请检查一下.硬盘在家里崩溃了?不是问题(至少使用您的源代码).

即使您现在不使用版本控制,您也可能在职业生涯后期的某个时间点使用它,您现在可以从更加熟悉的原则中获益.

  • ......或"MyWork副本的副本" (15认同)

Ed *_*bor 14

即使是独自工作,这件事有过吗?你运行你的应用程序,有些东西不起作用你说"昨天工作,我发誓我没有触及那个类/方法." 如果您定期检查代码,快速版本差异将显示最后一天发生了什么变化.


Rob*_*vey 13

这是一个场景,可以说明源控制的有用性,即使你单独工作.

您的客户要求您对网站实施雄心勃勃的修改.它将花费您几周时间,并涉及对许多页面的编辑.你开始工作了.

当客户致电并告诉您放弃正在进行的操作以对网站进行紧急但更微小的更改时,您已完成此任务的50%.你没有完成更大的任务,所以它还没有准备好上线,客户端不能等待较小的更改.但他也希望将微小的变化合并到你的工作中,以应对更大的变化.

也许您正在一个包含该网站副本的单独文件夹中处理大型任务.现在,您必须弄清楚如何以可以快速部署的方式进行微小更改.你疯狂地工作并完成它.客户端回调进一步的细化请求.你也这样做并部署它.一切都很好.

现在,您必须将其合并到正在进行的主要更改工作中.你为紧急工作改变了什么?你工作得太快,无法记笔记.而且你现在不能简单地区分这两个目录,因为两者都有相对于你开始的基线的变化.

上面的场景表明,即使你单独工作,源代码控制也是一个很好的工具.

  • 您可以使用分支来处理长期任务,然后在完成后将分支合并回主线.
  • 您可以将整个文件集与其他分支或过去的修订版进行比较,以查看不同的内容.
  • 您可以跟踪一段时间内的工作(顺便说一句,这对于报告和开发票非常有用).
  • 您可以根据日期或您定义的里程碑恢复任何文件的任何修订.

对于单独工作,建议使用Subversion或Git.任何人都可以自由选择其中一个,但要么明显优于不使用任何版本控制.好书是由Mike Mason 编写的" 使用Subversion的第二版的实用版本控制 "或由Travis Swicegood编写的" 使用Git的实用版本控制 ".


原作者:比尔卡文


gbc*_*gbc 10

即使单个开发人员源代码控制提供了很大的好处.它允许您存储代码的历史记录,并随时恢复到以前版本的软件.这使您可以无畏地进行实验,因为您可以随时恢复到正在运行的源代码的另一个版本.

这就像拥有一个巨大的"撤消"按钮一直回到你的第一行代码.


Vin*_*nie 7

开始使用后,版本控制几乎不可能没有.如果不止一个开发人员在相同的代码库上工作,这是必不可少的......但对于单个开发人员来说它也非常有用.

它跟踪代码中的更改,并允许您回滚到以前的版本.它可以让您自由地尝试一些知识,即如果有任何问题,您可以撤消更改.


小智 5

您获得安全性(在备份代码的意义上)和代码版本化(假设您养成了经常提交更改的习惯).即使没有其他人最终与你一起处理代码,这两件事都是非常好的事情......