76

我需要实施版本控制,即使只是我在家里做的开发。在过去的几年里,我读到了关于颠覆是多么伟大的文章,并且正准备专注于学习这一点,直到我听说 Git 是即将到来的版本控制系统。

鉴于这种情况,我应该推迟一下,看看哪个排在首位?它们的相对优势是什么?

我注意到 Git 的一个问题是,功能齐全的 GUI 并不多,这对我团队中的许多用户很重要。

此外,不介意关于如何开始使用其中一种的建议。(教程等)

4

34 回答 34

82

版本控制最重要的是:

开始使用吧

不使用版本控制是一个可怕的想法。如果您没有使用版本控制,请立即停止阅读并开始使用它。

很容易从

cvs<->svn<->git<->hg

你选择哪一个并不重要。只需选择最容易使用的一个并开始记录您的代码历史。您以后可以随时迁移到另一个 (D)VCS。

如果您正在寻找易于使用的 GUI,请查看TortoiseSVN (Windows)版本 (Mac)(由codingwithoutcomments建议)


编辑:

pix0r 说:

Git 有一些不错的功能,但除非您已经使用过像 CVS 或 Subversion 这样更标准的东西,否则您将无法欣赏它们。

这。如果您不知道版本控制可以为您做什么,那么使用 git 毫无意义。

编辑2:

刚刚在 reddit 上看到了这个链接:Subversion Cheat Sheet。svn 命令行的快速参考。

于 2008-08-05T18:34:44.350 回答
19

使用颠覆,它易于设置,易于使用,并且具有大量工具。任何未来的修订系统都将具有从 SVN 功能导入的功能,因此如果您的需求增长,您就不能在未来进行更改。

于 2008-08-05T18:31:56.773 回答
16

Subversion Book是您学习该工具的最佳选择。那里可能还有其他快速入门教程,但本书是您能找到的最好的单一参考。

Git 有一些不错的功能,但除非您已经使用过像 CVS 或 Subversion 这样更标准的东西,否则您将无法欣赏它们。我肯定会同意以前的海报并从 Subversion 开始。

于 2008-08-05T18:36:48.370 回答
13

如果您不熟悉版本控制,请阅读以下内容:
Source Control HOWTO

于 2008-08-14T07:42:38.540 回答
11

去SVN。如果您以前从未使用过源代码控制,那么无论哪种方式对您来说都无关紧要。

此外,使用源代码控制系统并不涉及大量学习。如果你学会了一个,你可以在以后轻松地切换到另一个。

SVN 是一个很棒的工具,它应该可以满足您的大部分需求。而且由于它已经存在,它拥有相当多的 GUI 工具(例如 TortoiseSVN)。

去SVN。

于 2008-08-05T18:33:56.927 回答
9

有关大多数基本概念的友好解释,请参阅版本控制可视化指南。这篇文章对 SVN 非常友好。

于 2008-08-05T18:39:23.310 回答
8

我使用过 RCS、CVS、SCCS、SourceSafe、Vault、perforce、subversion 和 git。

我评估过 BitKeeper、Dimensions、arch、bazaar、svk、ClearCase、PVCS 和 Synergy。

如果我今天必须启动一个新的存储库,我会选择git。把手放下。

它是免费的、快速的,并且正在积极开发中。

您可以使用 git-svn 将其用作任何 subversion 存储库的客户端。

它摇摆不定。

于 2008-08-14T06:21:33.197 回答
5

@superjoe30

如果您是唯一的程序员,那么在您自己的计算机上使用源代码控制怎么样?这是好习惯吗?有相关的提示或技巧吗?

我发现 git 实际上更容易做到这一点,因为您不需要服务器或担心输入 URL 等等。您的版本控制内容只存在于.git项目内的目录中,您只需继续使用它即可。

5 秒介绍(假设您已安装它)

cd myproject
git init
git add * # add all the files
git commit

下次你做一些改变

git add newfile1 newfile2 # if you've made any new files since last time
git commit -a

只要你这样做,git就会支持你。如果你搞砸了,你的代码在漂亮的 git 存储库中是安全的。这很棒

  • 注意:你可能会发现从 git 中取出东西比把它们放进去要困难一些,但有这个问题比根本没有文件要好得多!
于 2008-08-14T07:00:50.370 回答
5

根据我自己的经验,我不推荐 git 作为版本控制的介绍。我已经使用它几个月了,我的印象是它非常强大,而且——现在我已经部分理解了它——相当直观。然而,学习曲线非常陡峭,尽管我多年来一直在使用版本控制。它还存在表现力太强的问题——它支持许多不同的工作流程和开发模型,但关于“最佳”使用方式的唯一指导是在谷歌搜索中深入几页,这也让新手很难选择向上。

也就是说,从 git 的空白开始实际上可能会更容易——我的 VCS 经验都是集中式版本控制(CVS、SVN、Perforce ...),而我(持续!)使用 git 的部分困难是理解分布式模型的含义。我确实瞥了一眼其他 DVCS,例如 Bazaar 和 Mercurial,它们似乎对新手更加友好。

无论如何,正如其他人所说,Subversion 可能是习惯版本控制思维和获得 VCS 好处(回滚、分支、协作开发、更轻松的代码审查等)的实践经验的最简单方法。

哦,不要从 CVS 开始。它仍在实际使用中,并且具有优势,但恕我直言,它有太多的历史怪癖和实现问题(非原子提交!),不是一个很好的学习方式。

于 2008-09-23T09:32:14.163 回答
4

我的投票投给了颠覆。它非常强大,但易于使用,并且有一些很棒的工具,比如TortoiseSVN

但正如其他人在我之前所说的,刚开始使用它。源代码控制是软件开发过程的重要组成部分。任何“严肃的”软件项目都不应该没有它。

于 2008-08-05T18:39:20.597 回答
4

在我目前的工作中,我的前任没有使用任何类型的版本控制。在他保存所有项目的至少 3 个不同的地方,只有堆积如山的文件夹。任何随机项目文件夹都可以预期找到至少一个文件夹名称“project (OLD)”和一个名为“project”的文件夹

使用版本控制,您永远不必复制“安全”构建。您不必担心您的 IDE 会损坏您正在处理的文件(我在看着您,REALBasic 5.5),因为每天都可以轻松提交(阅读:保存)您的工作。

不用说,我在发现它存在的第二天就安装了版本控制。

此外,TortoiseSVN 使提交到数据库就像右键单击文件夹一样简单。

于 2008-08-05T19:18:37.477 回答
4

如果您想避免任何命令行工作,也可以为您的服务器尝试视觉 svn 。

于 2008-08-06T18:59:40.167 回答
3

如果您使用的是 Mac OSX,我发现 http://www.versionsapp.com/">Versions 是 SVN 的一个令人难以置信的(免费)GUI 前端。

于 2008-08-05T19:01:55.200 回答
3

Git 优于颠覆,但它有点处于最前沿。

我想说,如果你才刚刚开始,那就跳到边缘;设置一个免费帐户@http: //github.com

他们在网站上有用于设置和使用 git 的教育材料。

于 2008-08-22T18:38:37.000 回答
2

不要等待。选一个,随它去吧。所有系统都有其优点和缺点。您的电源可能会断电,您的计算机被盗,或者您忘记撤消重大更改,并且在您等待看谁获胜时,您的所有代码都会被烧毁。

于 2008-08-05T18:35:27.890 回答
2

在版本控制系统之间切换并不难。正如其他人所提到的,重要的是尽快开始使用任何东西。使用源代码控制相对于不使用源代码控制的好处远远超过了不同类型的源代码控制之间的差异优势。

请记住,无论您使用什么版本的源代码控制,您都可以通过将旧系统中的文件放到磁盘上然后将这些原始文件导入新系统来对另一个系统进行暴力转换。

此外,熟悉源代码控制基础知识对于软件开发人员来说是一项非常非常重要的技能。

于 2008-08-05T23:20:03.510 回答
1

是的,除非您真的需要 git 的特定功能,否则首选 SVN。SVN 已经够难了;听起来 git 更复杂。你可以从像Beanstalk这样的人那里获得托管的 svn - 除非你有内部 Linux 人员,否则我真的会推荐它。事情很容易出错,很高兴有其他人负责修复它。

Eric Sink 提供了一个关于修订控制的优秀教程,无论您使用哪种系统,都值得一读。

于 2008-08-05T18:40:30.937 回答
1

使用 TortoiseSVN(如果在 mac 上,则为 version.app)。只需安装即可。如果您需要一个地方来托管您的代码,请查看http://beanstalkapp.com/

于 2008-08-22T18:42:41.403 回答
1

Coding Horror 有一篇关于如何在 Windows 上设置 Subversion的精彩帖子。

按照教程,我能够让 Subervsion 和 TortoiseSVN 在本地运行,并从中获得了所需的教育。

就 Git 而言,对它们进行动手实验可能是个好主意,以了解哪种适合您的特定开发实践。

于 2008-08-25T14:52:48.733 回答
1

SubVersion 是您的最佳选择,正如 Karl Seguin 指出的那样,迁移到另一个版本控制系统不会有问题。SVN 在客户端 (TortoiseSVN) 中也有非常容易使用的 GUI。

http://www.snee.com/bobdc.blog/2007/08/getting_started_with_subversio.html http://dojo.jot.com/WikiHome/Getting%20Started%20With%20Subversion

于 2008-09-23T06:50:43.133 回答
1

如果您选择使用 subversion 并且想要托管自己的 svn 服务器,那么有一个非常好用且简单的基于 Windows 的服务器,称为 VisualSVN 服务器。它隐藏了设置 apache 服务器的复杂性,您基本上只需 next next next。用户配置由 webUI 处理,而不是配置

http://www.visualsvn.com/server/

使用公共服务 rlike beanstalk 可能更容易,但有些人喜欢拥有自己的存储库,无论是为了速度还是安全

于 2008-09-23T08:46:06.227 回答
0

当我决定必须使用代码版本控制系统时,我四处寻找有关如何入门的好教程,但没有找到任何可以帮助我的教程。

所以我简单地为客户端安装了 SVN Server 和 Tortoise SVN 并深入研究了它,但我一直不知道如何使用它。

于 2008-08-05T18:36:01.227 回答
0

开始在实际工作中使用 SVN,但尽量腾出时间来摆弄 Git 和/或 Mercurial。SVN 对于生产来说相当稳定,但最终您将面临需要分布式 SCM 的情况,到那时您将正确武装并且新系统将足够成熟。

于 2008-08-05T18:38:00.973 回答
0

superjoe30 写道

相关问题(也许也可以编辑答案来回答这个问题):

如果您是唯一的程序员,那么在您自己的计算机上使用源代码控制怎么样?>>这是好习惯吗?有相关的提示或技巧吗?

我将 SVN 用于我所有的个人项目。我开始在我的家用机器上运行 svn,但最终迁移到了 Dreamhost。他们包含 Subversion 的托管软件包非常合理。

于 2008-08-05T18:41:38.797 回答
0

如果在 Windows 盒子上,一个快速而肮脏的解决方案是 CVSNT。易于使用,只需设置它并且效果很好。

我自己更喜欢 SVN,但这是一个快速使用的好方法。

于 2008-08-07T17:33:30.573 回答
0

我肯定会选择 SVN 而不是 CVS,如果仅仅是因为使用 CVS 学习源代码控制的人倾向于使用“ svn delete”然后“ svn add”而不是“ svn move”。这使得查找特定文件的所有先前版本变得更加困难。你可以随时升级到使用 git-svn。我个人认为它比 hg 更容易学习,但真正使用 SVN 的主要原因是它在很大程度上已成为开源软件事实上的版本控制系统。

如果您计划学习/使用D,那么访问第三方存储库几乎是强制性的,例如DSource

于 2008-08-17T01:25:05.977 回答
0

@superjoe30 是的,绝对的。一旦你开始使用版本控制,你就再也回不去了。我将它用于所有内容,甚至是我的“主”文件夹。

@Orion Edwards Subversion 不需要服务器。您可以直接访问本地存储库(当然,通过客户端),并且不涉及服务器进程。

于 2008-08-18T08:17:01.603 回答
0

只需使用 TortoiseSVN,即使不知道实际的 Subversion 命令也可以生活……但这很糟糕。幸运的是,总会有一个“很好的机会”来背诵它们——当你无价的存储库第一次被破坏时。

是的,它发生了。

于 2008-08-18T14:47:18.493 回答
0

正如在其他地方多次提到的,Just Do It。通过阅读红皮书中的快速入门指南,我能够立即在 Windows 下从头开始使用 Subversion。一旦我将 TortoiseSVN 指向存储库,我就开始做生意了。我花了一段时间才把更好的分数拿下来,但他们只是克服了一些小问题。

我建议安装 Subversion 服务而不是使用 file:// URL,但这主要是个人喜好。对于存储在您的开发机器上的存储库,file:// 可以正常工作。

于 2008-08-22T18:30:30.763 回答
0

从个人经验来看,svn 将是我的推荐。您甚至可以使用像Beanstalk这样提供免费帐户的服务(显然有限制,但对于任何小型项目来说都足够了)来试水。但正如其他人所说,git 更优越,可能值得研究。

于 2008-08-22T18:42:50.937 回答
0

现在简化 SVN 服务器设置的一个主要技巧是使用虚拟设备。也就是说,一个预先安装和(大部分)预先配置了颠覆的虚拟机 - 几乎是即插即用的东西。您可以在这里这里这里尝试,或者尝试在 Google 上搜索“颠覆虚拟设备”。

于 2008-08-30T16:30:14.933 回答
0

在阅读了 Wil Shipley 的博客后,我开始使用 subversion。

所以我开始检查代码,一台机器和dreamhost帐户。然后在我不小心删除了一个函数并保存了我的项目后,我知道我陷入了“dudu”的深渊,但是通过颠覆,我刚刚检查了该文件的最新版本,就像什么都没发生一样。

我现在对所有内容都使用版本控制。我正计划转移到 git,因为它更快,离线工作,占用更少空间,哦,天哪,它更快。

于 2008-09-02T09:35:40.787 回答
0

使用 svn 而不是 cvs 的一个重要原因是 svn 支持二进制差异。这对许多程序员来说可能无关紧要,但是如果您要对 10Mb 的映像进行一系列细微的更改,那么每次在您的存储库中都有一个唯一的副本会非常迅速地占用空间。

我在 Windows 上使用 TortoiseSVN,但在 Mac 上使用商业CornerStone客户端而不是(现在是商业的)版本客户端。我发现包括 RapidSVN 在内的一系列免费 Mac 客户端有足够多的痛点,让我不得不花大价钱。CornerStone 提供的用于捕获我忘记添加到存储库的文件的安全网对我来说物有所值。我花了很多时间与一个位于相反时区的美国客户合作,所以不能承受忘记添加文件的错误!

于 2009-01-12T12:56:58.053 回答
-1

简短的回答:Subversion 如果你是唯一一个编码它的人,或者你和你一起工作的每个人都在现场。如果您与不同站点的人一起工作并且您的代码库很大,那么 GIT。

Subversion 非常非常容易设置和使用。它也很好,因为你也可以用它做相对复杂的事情,比如将它连接到 Apache 并使用 SSL 或将它插入 Trac 进行项目管理。Subversion 有很多可用的工具,它确实是一个不错的选择。

对于在分布式环境中工作的大型团队中的人来说,GIT 更有用。Linus T. 为 Linux 团队开发了它,因为他对传统存储库的功能不满意。如果您计划与开源项目的人一起工作,那么值得学习。

于 2008-08-25T14:46:53.037 回答