22

在 SO 上至少有 10 人告诉我版本控制是一件好事,即使只有我一个人,我现在有一个后续问题。

所有不同类型的版本控制之间有什么区别?是否有任何人都知道的非常简单易懂的版本控制指南?

4

13 回答 13

20

我们似乎正处于版本控制的黄金时代,有很多选择,所有这些都有其优点和缺点。

以下是我看到最常用的:

  • svn——目前最流行的开源?
  • git - 自从 Linus 切换到它后非常热
  • 善变 - 我认识的一些聪明人对此发誓
  • cvs - 每个人都在转换的那个
  • perforce - 恕我直言,最好的功能,但它不是开源的。不过,两用户许可证是免费的。
  • visual sourcesafe - 我在微软的世界里并不多,所以我不知道这个,除了人们喜欢在微软的所有东西上破旧不堪。
  • sccs - 出于历史兴趣,我们提到了这一点,上述许多人的曾祖父
  • rcs - 以及上述许多人的祖父

我的建议:使用 git、svn 或 perforce 最安全,因为很多人使用它们,它们是跨平台的,有很好的 gui,你可以购买有关它们的书籍等。

不要考虑 cvs、sccs、rcs,它们是古董。

好消息是,由于您的项目相对较小,一旦您更有经验并决定要使用另一个系统,您就可以将代码移至新系统。

于 2008-08-06T19:10:51.687 回答
15

Eric Sink 对源代码控制有很好的概述。这里还有一些关于 SO的现有 问题。

于 2008-08-06T19:02:28.303 回答
6

对于刚开始使用版本控制的每个人:

由于炒作,请不要使用 git(或 hg 或 bzr)

使用 git(或 hg 或 bzr),因为它们是比 SVN更好的源代码管理工具

我在工作中使用了几年的 SVN,并在 6 个月前切换到了 git。如果不先学习 SVN,在使用 DVCS 时我会完全迷失。

对于刚开始使用版本控制的人:

  • 首先下载SVN
  • 了解为什么需要版本控制
  • 学习如何提交、签出、分支
  • 了解为什么在 SVN 中合并如此痛苦

然后切换到 DVCS 并学习:

  • 如何克隆/分支/提交
  • 合并你的分支是多么容易(分支疯狂!)

  • 重写提交历史并让您的分支与主线保持同步是多么容易( git rebase -i , )
  • 如何发布您的更改以便其他人受益

tldr; 人群:

从 SVN 开始学习基础知识,然后毕业到 DVCS。

于 2008-08-06T19:34:49.940 回答
5

版本控制对于开发来说是必不可少的,即使您自己工作也是如此,因为它可以保护您免受自己的伤害。如果你犯了一个错误,回滚到你知道有效的以前版本的代码是一件简单的事情。这也使您可以自由地探索和试验您的代码,因为您不必担心您正在做的事情是否可逆。版本控制系统 (VCS) 有两个主要分支,集中式和分布式。

集中式 VCS 基于使用中央服务器,每个人都“签出”一个项目,对其进行处理,并将他们的更改“提交”回服务器以供其他人使用。主要的集中式 VCS 是 CVS 和 SVN。两者都受到严厉批评,因为“合并”“分支”对他们来说非常痛苦。[TODO:解释什么是分支以及为什么用 CVS 和 SVN 很难合并]

分布式 VCS 让每个人都拥有自己的服务器,您可以在其中“拉”其他人的更改并将更改“推送”到服务器。最常见的分布式 VCS 是 Git 和 Mercurial。[TODO:写更多关于分布式 VCS]

如果您正在处理一个项目,我强烈建议您使用分布式 VCS。我推荐 Git,因为它速度极快,但被批评为太难使用。如果您不介意使用商业产品,BitKeeper 应该很容易使用。

于 2008-08-06T19:00:23.050 回答
5

我将从:

阅读完之后,下载并安装SVNTortoiseSVN并浏览本书的前几章并开始使用。

于 2008-08-06T19:02:22.203 回答
2

另一个问题答案也适用于此,最重要的是

Jon Works说:
版本控制最重要的是:

开始使用吧

他的回答更详细,我不想被指责为剽窃,所以看看。

于 2008-08-06T19:29:10.153 回答
2

简单的答案是,你喜欢撤消按钮吗?答案当然是肯定的,因为我们人类总是犯错误。

作为程序员,通常情况下,在我们尝试解决问题的方法之前可能需要几个小时的测试、代码更改、覆盖、删除、文件移动和重命名,这完全是错误的,并且代码比我们开始时更糟糕。

因此,源代码控制是一个巨大的撤消按钮,可将代码恢复到草绿色且食物充足的早期时间。不仅如此,由于源代码控制的工作方式,您仍然可以保留损坏代码的副本,以防几周后您想再次参考它并挑选出任何好的想法.

我个人(尽管它可能被称为矫枉过正)使用 Source Gear Fortress 的免费单用户许可版本(这是他们的具有错误跟踪功能的 Vault 源代码控制产品)。我发现 UI 使用起来非常简单,它同时支持 checkout > edit > checkin 模型和 edit > merge > commit 模型。不过设置起来可能有点棘手,需要您运行 ISS 和 SQL 服务器的本地副本。您可能想尝试一个较小的程序,例如此处其他答案所推荐的程序。看看你喜欢什么,你能负担得起什么。

于 2008-08-06T23:31:21.270 回答
2

马克说:

git - 自从 Linus 切换到它后非常热

我只想指出,Linus 没有切换到它,Linus的。

于 2008-08-06T23:33:52.843 回答
1

如果您自己在 Windows 环境中工作,那么 SourceGear 的 Vault 的单用户许可是免费的。

于 2008-08-06T19:15:30.227 回答
1

我们使用并喜欢Mercurial。它遵循分布式模型——它消除了一些必须“签到”工作的感觉。Mozilla 已迁移到 Mercurial,这是一个好兆头,表明它不会很快消失。在我看来,一个缺点是它没有一个很好的 GUI。但是,如果您对命令行感到满意,那么它非常方便。

Mercurial 文档 非官方手册

于 2008-08-06T19:59:33.697 回答
0

只需开始使用源代码管理,无论您使用什么类型。你用什么并不重要;重要的是它的用途

于 2008-08-17T02:17:44.077 回答
0

和其他人一样,SC 真的取决于您的需求、预算、环境等。

从根本上说,源代码控制旨在为您的所有代码提供一个中央存储库,并跟踪谁在何时对其做了什么。应该有完整的历史记录,并且您可以获得执行完整变更日志、审核、访问控制等的产品...

当您开始考虑希望或需要如何将 SC 纳入您的环境(无论是您的个人代码和文档还是大型公司)时,那里的每种产品都开始发光(可以这么说)。随着人们使用它们,他们发现该工具有局限性,因此人们编写了新的。SVN 诞生于创作者在 CVS 中看到的限制。Linus 想要为 Linux 内核提供更好的东西,所以现在我们有了git

我会说开始使用一个(像 SVN 这样非常流行且非常易于使用的东西)并看看它是如何进行的。随着时间的推移,您可能会发现您需要一些其他功能,或者需要与其他系统交互,因此您可能需要 SourceSafe 或其他工具。

源代码控制始终很重要,虽然您可以在处理 PSD 文件或其他内容时手动重新编号版本,但您会忘记运行该批处理脚本一次或两次,或者可能忘记哪个编号去了与哪个变化。这就是大多数这些 SC 工具可以提供帮助的地方(只要您签入/签出)。

于 2008-10-07T12:36:31.950 回答
0

另请参阅此 SO 问题:

于 2009-05-31T09:34:01.227 回答