版本控制入门

时间:2008-08-05 18:29:14

标签: git svn version-control language-agnostic dvcs

我需要实现版本控制,即使只是我在家里做的开发。我已经读过Subversion在过去几年中的表现有多棒,并且在我听说Git成为即将推出的版本控制系统之前,我将致力于学习这一点。

鉴于这种情况,我应该推迟看看哪一个出现在顶部?它们的相对优势是什么?

我注意到Git的一个问题是没有很多全功能的GUI,这对我团队中的许多用户来说非常重要。

此外,不介意如何开始使用其中一个或另一个。 (教程等)

34 个答案:

答案 0 :(得分:81)

版本控制最重要的是:

只是开始使用

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

转换非常容易
cvs<->svn<->git<->hg

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

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


编辑:

  

pix0r said:

     

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

此。如果您不知道版本控制可以为您做什么,那么使用git是没有意义的。

编辑2:

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

答案 1 :(得分:18)

使用subversion,它易于设置,易于使用,并且拥有大量工具。任何未来的修订系统都将从SVN功能导入,因此如果您的需求增长,就不会无法改变。

答案 2 :(得分:16)

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

Git有一些不错的功能,但除非你已经使用过更复杂的标准,比如CVS或Subversion,否则你将无法欣赏它们。我绝对同意以前的海报,并从Subversion开始。

答案 3 :(得分:13)

如果您是版本控制的新手,请阅读:
Source Control HOWTO

答案 4 :(得分:10)

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

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

SVN是一个很棒的工具,它可以满足您的大多数需求。由于它已经存在,它有一个公平的GUI工具共享(例如TortoiseSVN)。

转到SVN。

答案 5 :(得分:8)

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

我评估了BitKeeper,Dimensions,arch,bazaar,svk,ClearCase,PVCS和Synergy。

如果我今天必须开始新的存储库,我会选择 git 。放下手。

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

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

它摇滚。

答案 6 :(得分:8)

有关大多数基本概念的友好解释,请参阅A Visual Guide to Version Control。这篇文章非常适合SVN。

答案 7 :(得分: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就会退缩。如果你陷入困境,你的代码在nice git存储库中是安全的。太棒了

  • 注意:你可能会发现使用它们比使用它们要困难得多,但是出现这个问题要比没有文件要好得多!

答案 8 :(得分:5)

根据我自己的经验,我不会推荐git作为版本控制的介绍。我已经使用它几个月了,而且我的印象是它非常强大 - 现在我已经部分了解它 - 相当直观。然而,即使我多年来一直使用版本控制,学习曲线也非常陡峭。它也有过于富有表现力 - 它支持许多不同的工作流程和开发模型,但是对于“最佳”使用方式的唯一指导是谷歌搜索的几页深度,这也使新手选择变得棘手起来。

也就是说,从带有git的空白平板开始可能实际上更容易 - 我的VCS体验都是集中版本控制(CVS,SVN,Perforce ...)和部分我(正在进行的)难度git已经理解了分布式模型的含义。我简单地看了一下像Bazaar和Mercurial这样的其他DVCS,他们似乎对新手友好了。

无论如何,正如其他人所说的那样,Subversion可能是习惯版本控制思维模式的最简单方法,可以获得VCS优势的实际体验(回滚,分支机构,协作开发,更轻松的代码审查等)。

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

答案 9 :(得分:4)

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

使用版本控制,您永远不必复制“安全”版本。你真的不必担心你的IDE会破坏你正在处理的文件(我正在看你,REALBasic 5.5)因为你每天都很容易提交(阅读:保存)你的工作。

毋庸置疑,我发现它存在后的第二天就安装了版本控制。

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

答案 10 :(得分:4)

如果您想避免任何命令行工作,请为您的服务器试用visual svn

答案 11 :(得分:4)

我的投票是Subversion。它功能强大,易于使用,并且有一些很棒的工具,如TortoiseSVN

但正如其他人在我之前所说的,只是开始使用它。源代码控制是软件开发过程中非常重要的一部分。没有“严肃”的软件项目应该没有它。

答案 12 :(得分:3)

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

答案 13 :(得分:3)

Git优于颠覆,但它在最前沿有点出类拔萃。

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

他们有现场教育资料用于设置&amp;使用git。

答案 14 :(得分:2)

不要等。选一个,然后去吧。所有系统都有其优点和缺点。你的权力可能会消失,你的计算机被盗,或者你忘记撤消一个重大的改变,所有的代码都会在你等待看谁胜利的时候被炒掉。

答案 15 :(得分:1)

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

请记住,无论您使用何种版本的源代码控制,您都可以通过将旧系统中的文件放入磁盘然后将这些原始文件导入新系统,从而将强力转换为其他系统

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

答案 16 :(得分:1)

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

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

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

答案 17 :(得分:1)

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

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

答案 18 :(得分:1)

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

答案 19 :(得分:0)

只要使用TortoiseSVN,你甚至可以在不知道实际的Subversion命令的情况下生活......但这很糟糕。幸运的是,当你无价的存储库首次被破坏时,总会有一个“很好的机会”来学习它们。

是的,它发生了。

答案 20 :(得分:0)

使用svn而不是cvs的一个重要原因是svn支持二进制差异。对于许多程序员而言,这可能并不重要,但如果您在10Mb映像中进行一系列微小更改,则每次在存储库中使用唯一副本可以非常快速地占用空间。

我在Windows上使用TortoiseSVN但在Mac上已经通过(现在是商业版)版本客户端使用商业CornerStone客户端。我发现免费的Mac客户端,包括RapidSVN,有足够的痛点让我陷入炮轰真正的美元。 CornerStone提供的用于捕获我忘记添加到存储库的文件的安全网对我来说是值得的。我花了很多时间与一个处于相对时区的美国客户合作,因此无法承受错误添加文件的错误!

答案 21 :(得分:0)

我在阅读了Wil Shipleys博客后开始使用颠覆。

所以我开始检查代码,一台机器和dreamhost帐户。然后在我意外删除了一个函数并保存了我的项目后,我知道我处于深度“dudu”,但是对于subversion,我只是查看了该文件的最新版本,就像没有发生任何事情一样。

我现在使用版本控制。我打算转移到git,因为它更快,脱机工作,占用更少的空间哦,男孩更快。

答案 22 :(得分:0)

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

答案 23 :(得分:0)

Coding Horror有一篇关于how to set up Subversion on Windows的好文章。

按照教程,我能够让Subervsion和TortoiseSVN在本地运行,并且我得到了我需要的教育。

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

答案 24 :(得分:0)

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

答案 25 :(得分:0)

正如其他地方多次提到的,Just Do It。通过阅读红皮书中的快速入门指南,我可以在Windows下从头开始使用Subversion。一旦我将TortoiseSVN指向存储库,我就开始了。我花了一段时间才得到更好的分数,但是他们只是轻微的驼峰才能克服。

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

答案 26 :(得分:0)

Yup,SVN首选,除非你真的需要git的特殊功能。 SVN很难;这听起来像git更复杂。你可以从像Beanstalk这样的人那里获得托管的svn - 除非你有内部Linux人员,否则我真的推荐它。事情可能很容易出错,让其他人找工作就好了。

Eric Sink的版本控制有一个很好的tutorial,无论您使用哪种系统,都值得一读。

答案 27 :(得分:0)

@ superjoe30是的,绝对的。一旦你开始使用版本控制,你永远不会回去。我把它用于一切,甚至是我的“家”文件夹。

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

答案 28 :(得分:0)

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

如果您计划学习/使用D,则几乎必须访问第三方存储库,例如DSource

答案 29 :(得分:0)

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

所以我简单地为客户端安装了SVN服务器和Tortoise SVN,并且深入了解了这一点。我不知道如何使用它。

答案 30 :(得分:0)

开始使用SVN进行实际工作,但尝试花点时间摆弄Git和/或Mercurial。 SVN在生产方面相当稳定,但最终你将面临一个你需要分布式SCM的情况,这时你将得到适当的武装,新系统将足够成熟。 / p>

答案 31 :(得分:0)

如果在Windows机器上,快速而肮脏的解决方案是CVSNT。易于使用,只需设置它并且运行良好。

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

答案 32 :(得分:0)

  

superjoe30 writes

     
    

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

         

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

  

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

答案 33 :(得分:-1)

简短的回答:Subversion如果您是唯一一个编码它的人,或者您在与您合作的每个人都在现场。 GIT,如果您与不同网站的人合作,而且您的代码库非常庞大。

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

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