在 SO 上至少有 10 人告诉我版本控制是一件好事,即使只有我一个人,我现在有一个后续问题。
所有不同类型的版本控制之间有什么区别?是否有任何人都知道的非常简单易懂的版本控制指南?
在 SO 上至少有 10 人告诉我版本控制是一件好事,即使只有我一个人,我现在有一个后续问题。
所有不同类型的版本控制之间有什么区别?是否有任何人都知道的非常简单易懂的版本控制指南?
我们似乎正处于版本控制的黄金时代,有很多选择,所有这些都有其优点和缺点。
以下是我看到最常用的:
我的建议:使用 git、svn 或 perforce 最安全,因为很多人使用它们,它们是跨平台的,有很好的 gui,你可以购买有关它们的书籍等。
不要考虑 cvs、sccs、rcs,它们是古董。
好消息是,由于您的项目相对较小,一旦您更有经验并决定要使用另一个系统,您就可以将代码移至新系统。
对于刚开始使用版本控制的每个人:
由于炒作,请不要使用 git(或 hg 或 bzr)
使用 git(或 hg 或 bzr),因为它们是比 SVN更好的源代码管理工具。
我在工作中使用了几年的 SVN,并在 6 个月前切换到了 git。如果不先学习 SVN,在使用 DVCS 时我会完全迷失。
对于刚开始使用版本控制的人:
然后切换到 DVCS 并学习:
tldr; 人群:
从 SVN 开始学习基础知识,然后毕业到 DVCS。
版本控制对于开发来说是必不可少的,即使您自己工作也是如此,因为它可以保护您免受自己的伤害。如果你犯了一个错误,回滚到你知道有效的以前版本的代码是一件简单的事情。这也使您可以自由地探索和试验您的代码,因为您不必担心您正在做的事情是否可逆。版本控制系统 (VCS) 有两个主要分支,集中式和分布式。
集中式 VCS 基于使用中央服务器,每个人都“签出”一个项目,对其进行处理,并将他们的更改“提交”回服务器以供其他人使用。主要的集中式 VCS 是 CVS 和 SVN。两者都受到严厉批评,因为“合并”“分支”对他们来说非常痛苦。[TODO:解释什么是分支以及为什么用 CVS 和 SVN 很难合并]
分布式 VCS 让每个人都拥有自己的服务器,您可以在其中“拉”其他人的更改并将更改“推送”到服务器。最常见的分布式 VCS 是 Git 和 Mercurial。[TODO:写更多关于分布式 VCS]
如果您正在处理一个项目,我强烈建议您使用分布式 VCS。我推荐 Git,因为它速度极快,但被批评为太难使用。如果您不介意使用商业产品,BitKeeper 应该很容易使用。
简单的答案是,你喜欢撤消按钮吗?答案当然是肯定的,因为我们人类总是犯错误。
作为程序员,通常情况下,在我们尝试解决问题的方法之前可能需要几个小时的测试、代码更改、覆盖、删除、文件移动和重命名,这完全是错误的,并且代码比我们开始时更糟糕。
因此,源代码控制是一个巨大的撤消按钮,可将代码恢复到草绿色且食物充足的早期时间。不仅如此,由于源代码控制的工作方式,您仍然可以保留损坏代码的副本,以防几周后您想再次参考它并挑选出任何好的想法.
我个人(尽管它可能被称为矫枉过正)使用 Source Gear Fortress 的免费单用户许可版本(这是他们的具有错误跟踪功能的 Vault 源代码控制产品)。我发现 UI 使用起来非常简单,它同时支持 checkout > edit > checkin 模型和 edit > merge > commit 模型。不过设置起来可能有点棘手,需要您运行 ISS 和 SQL 服务器的本地副本。您可能想尝试一个较小的程序,例如此处其他答案所推荐的程序。看看你喜欢什么,你能负担得起什么。
马克说:
git - 自从 Linus 切换到它后非常热
我只想指出,Linus 没有切换到它,Linus写的。
如果您自己在 Windows 环境中工作,那么 SourceGear 的 Vault 的单用户许可是免费的。
我们使用并喜欢Mercurial。它遵循分布式模型——它消除了一些必须“签到”工作的感觉。Mozilla 已迁移到 Mercurial,这是一个好兆头,表明它不会很快消失。在我看来,一个缺点是它没有一个很好的 GUI。但是,如果您对命令行感到满意,那么它非常方便。
只需开始使用源代码管理,无论您使用什么类型。你用什么并不重要;重要的是它的用途
和其他人一样,SC 真的取决于您的需求、预算、环境等。
从根本上说,源代码控制旨在为您的所有代码提供一个中央存储库,并跟踪谁在何时对其做了什么。应该有完整的历史记录,并且您可以获得执行完整变更日志、审核、访问控制等的产品...
当您开始考虑希望或需要如何将 SC 纳入您的环境(无论是您的个人代码和文档还是大型公司)时,那里的每种产品都开始发光(可以这么说)。随着人们使用它们,他们发现该工具有局限性,因此人们编写了新的。SVN 诞生于创作者在 CVS 中看到的限制。Linus 想要为 Linux 内核提供更好的东西,所以现在我们有了git。
我会说开始使用一个(像 SVN 这样非常流行且非常易于使用的东西)并看看它是如何进行的。随着时间的推移,您可能会发现您需要一些其他功能,或者需要与其他系统交互,因此您可能需要 SourceSafe 或其他工具。
源代码控制始终很重要,虽然您可以在处理 PSD 文件或其他内容时手动重新编号版本,但您会忘记运行该批处理脚本一次或两次,或者可能忘记哪个编号去了与哪个变化。这就是大多数这些 SC 工具可以提供帮助的地方(只要您签入/签出)。
另请参阅此 SO 问题: