我应该从哪里开始学习版本控制系统?我过去曾经使用过SVN,Team Foundation和Sourcesafe,但我并不觉得我完全掌握它,而且我的团队似乎也没有抓住它。
掌握哪一点最重要?我意识到这与VCS到VCS不同,但是为了这个问题,我们可以假设Subversion是我最感兴趣的VCS。
此外,如果可以的话,请推荐您认为有用的任何书籍。
答案 0 :(得分:10)
关于版本控制的维基百科文章是一个很好的起点
在尝试教我的同事时,我发现让他理解最后的词汇是开始向他介绍源代码控制技术的好方法。
不知道分支是什么?去了解它们是如何工作的:)
Version Control with Subversion上有一本免费的在线颠覆书,提供了宝贵的参考资料。
答案 1 :(得分:9)
答案 2 :(得分:6)
我认为有关源控制系统的最重要的一点是:
如果您已经涵盖了这些主要概念,那么您需要知道的大部分内容都是源代码控制:)
答案 3 :(得分:4)
这个主题有几本免费的电子书。尝试:
使用Subversion进行版本控制:Version Control with Subversion
Subversion版本控制(PDF):Subversion Version Control
我已阅读并会推荐前者。没有阅读“Subversion版本控制”,但它看起来非常深入。
答案 4 :(得分:1)
回答你的问题re:掌握最重要的一点我建议你在完成整个签入和退出过程后,回滚到旧版本并执行差异,你应该看一下分支。分支可以帮助您应对处于大变化中的痛苦,并突然需要执行错误修复并将其部署到生产中,而不会混合您正在处理的半成品。
答案 5 :(得分:1)
我认为Subversion文档是一个很好的起点。我发现维基百科并没有真正帮助,因为它只涵盖了“基本”的观点。
在alex提及的 Subversion Book 中,我特别推荐第1章,但如果您已经拥有Svn的一些经验,那么这个级别可能太低了。第4章详细介绍了分支和合并,但它非常技术性。
对我有很大帮助的是TortoiseSVN文档中的日常使用指南;它涵盖了教程样式中最重要的操作。
我想你需要掌握的最重要的事情是分支,合并和标记。了解这些需要时间和实践,因此我强烈建议在本地存储库中安装一个小型宠物项目,以便进行实验。我认为重要的是要意识到整个系统是基于差异的:合并只不过是将一个分支中所做的更改自动应用到另一个分支中的代码,而不是自己修改代码。像冲突这样的东西(花了我很多时间去理解)只是后果。
但当然,我还在学习:)
答案 6 :(得分:1)
我也和你一样,对SVN或SourceSafe从未真正感到满意。
结帐Mercurial。 Quickstart和Cheatsheets
也是一个伟大的cheat sheet from DongWoo Lee(他的网站似乎下来所以我扫描并上传到我的网站)
对于Mercurial来说,一切似乎都更顺利,更容易确定为什么,因为它与其他人的命令并没有那么不同。
答案 7 :(得分:1)
我不确定您对版本控制系统有多少经验,但对于那些对该概念没有先验知识的人,我建议您阅读Subversion book的前几章。其中描述的一些内容特定于Subversion,但许多概念对于版本控制系统以及如何使用它们是“通用的”。
我认为在开始使用版本控制系统之前,人们努力尝试理解版本控制系统背后的主要概念和基本原理非常重要。我经常看到开发人员只使用他们系统功能的一小部分,因为他们不了解底层概念,因此要么看不到使用他们认为“高级”或“不必要”功能的重点,要么他们是只是害怕这样做,因为害怕破坏某些东西或导致项目出现问题。
在过去与许多开发人员一起经历过这种现象后,我最近在我的博客上写了一篇关于我认为best practices for version control的摘要。
答案 8 :(得分:1)
阅读本文:How Software Evolves
答案 9 :(得分:0)
答案 10 :(得分:0)
恕我直言,配置管理的最佳网络资源是布拉德·阿普尔顿的The ACME Project
您应该阅读所有SCM模式和反模式。 所有SCM技术术语都在本网站上有明确定义,并且有很多关于分支技术,敏捷SCM和其他重要内容的文章。
这可能会为您提供足够的理论背景来处理任何特定的版本工具。
至于Subversion一书,它可能是上面提到的官方Subversion book。它可以在线免费获得,也可以购买硬拷贝。
答案 11 :(得分:0)
恕我直言,这是THE book:Berczuk关于SCM模式的书
答案 12 :(得分:-1)