版本控制入门


76

我需要实现版本控制,即使是在家中进行开发也是如此。我已经阅读了有关Subversion在过去几年中的出色表现,并打算全力以赴地学习这一知识,直到我听说Git是即将推出的版本控制系统。

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

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

同样,不介意关于如何开始使用另一种的建议。(教程等)


我不认为这应该具有特定的版本控制标签。我曾经考虑过自己更改它,但我想知道其他人的想法。
布拉德·吉尔伯特

Answers:


82

关于版本控制,最重要的是:

刚开始使用它

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

转换非常容易

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

选择哪一个都没关系。只需选择最简单的一种即可使用,然后开始记录代码的历史记录。以后您始终可以迁移到另一个(D)VCS。

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


编辑:

pix0r说:

Git具有一些不错的功能,但是除非您已经使用了CVS或Subversion等更标准的功能,否则您将无法欣赏它们。

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

编辑2:

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


您是否有一个很好的工具可以将存储库从一个转换为另一个?我完全同意“立即开始”,但是不得不怀疑将所有历史记录和修订版从一个VC系统移植到另一个VC系统有多么容易?
史蒂夫·特兰比

19

使用subversion,它易于设置,易于使用,并且具有许多工具。将来的任何修订系统都将具有从SVN导入的功能,因此,如果您的需求不断增长,就好像您不能随心所欲。


16

颠覆书是学习的工具,你最好的选择。可能还有其他快速入门教程,但是《本书》是您会发现的最好的单一参考。

Git具有一些不错的功能,但是除非您已经使用了CVS或Subversion等更标准的功能,否则您将无法欣赏它们。我绝对会同意以前的海报,并从Subversion开始。


13

如果您不熟悉VersionControl,请阅读以下内容:
Source Control HOWTO


埃里克·辛克(Eric Sink)自己说,这本在线书有些过时了。
JakubNarębski2011年

Eric Sink有印刷书籍(和PDF),但是我不记得下载URL。尽管这本书对于理解VCS基础知识很有帮助,但它并不公平。真实性营销比真实信息更多。
bahrep 2012年

11

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

而且,使用源代码控制系统不会涉及大量的学习。如果您学习了一个,则以后可以轻松切换到另一个。

SVN是一个很棒的工具,它应该满足您的大多数需求。而且自从问世以来,它就拥有GUI工具(例如TortoiseSVN)的公平共享者。

选择SVN。


“如果您学习一个,则可以在以后轻松地切换到另一个。” <-不正确。许多人在调整从集中式VCS到分布式VCS的思维方式时遇到问题。
Afriza N. Arief 2011年


8

我已经使用了RCS,CVS,SCCS,SourceSafe,Vault,perforce,subversion和git。

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

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

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

您可以使用git-svn将它用作任何Subversion仓库的客户端。

它晃动。


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中的内容比放入git中要困难一些,但是比起根本没有文件,出现该问题要好得多!

使用git add .(添加当前目录),而不是git add *(使用shell扩展),它的速度更快。
2011年

5

根据我自己的经验,我不会推荐git作为版本控制的简介。我已经使用了几个月,我的印象是它非常强大,而且-我现在已经部分了解了它-相当直观。但是,即使我多年来一直使用版本控制,学习曲线也非常陡峭。它也表现得太强了-它支持许多不同的工作流程和开发模型,但是有关“最佳”使用方式的唯一指南是在Google搜索中深入了几页,这对于新手来说也很棘手。向上。

就是说,从git的空白开始实际上可能会更容易-我的VCS经验全部是集中式版本控制(CVS,SVN,Perforce ...),而我(正在进行中!)遇到的部分困难是git了解分布式模型的含义。我简要浏览了其他DVCS,例如Bazaar和Mercurial,它们似乎对新手更友好。

无论如何,就像其他人所说的那样,Subversion可能是适应版本控制思想和获得VCS好处(回滚,分支,协作开发,更容易的代码审查等)的实践经验的最简单方法。

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


4

我的投票投向了Subversion。它功能强大,但易于使用,并且具有一些出色的工具,例如TortoiseSVN

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


4

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

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

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

另外,TortoiseSVN使得像右键单击文件夹一样轻松地提交数据库。



3

如果您使用的是Mac OSX,我发现http://www.versionsapp.com/“>版本是SVN的不可思议的(免费)GUI前端。


3

Git优于Subversion,但在前沿方面有点不足。

我想说的是,如果您才刚刚起步,那就快点走吧;设置一个免费帐户@ http://github.com

他们在现场有用于设置和使用git的教育资料。


我认为您的言论不公。与Subversion相比,Git并不优越。Git是一种DVCS,可以被认为是“最适合开源开发的”,而最奇特的功能是您可以快速分叉项目。Subversion是一种CVCS,它比Git更成熟和稳定
bahrep 2012年

2

不要等 选择一个,然后去。所有系统都有其优缺点。您的力量可能会耗尽,您的计算机将被盗,或者您忘记撤消主要更改,并且所有代码都被浪费了,等着看谁取得了胜利。


2

在版本控制系统之间切换并不困难。正如其他人提到的,重要的是尽快开始使用任何东西。与不使用源代码控制相比,使用源代码控制的好处大大超过了不同类型的源代码控制之间的区别收益。

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

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


1

是的,SVN是首选,除非您确实需要git的特定功能。SVN足够难。听起来git更难以使用。您可以从Beanstalk之类的人那里获得托管的svn-除非您有内部Linux的人,否则我真的会推荐它。事情很容易出错,很高兴有其他人来解决这个问题。

无论您使用哪种系统,Eric Sink都会提供出色的修订控制教程,值得一读。




1

如果您选择使用Subversion,并且希望托管自己的svn服务器,则有一个非常漂亮,简单的基于Windows的服务器,称为VisualSVN服务器。它掩盖了设置apache服务器的复杂性,您基本上只需要下一步。用户配置是通过webUI而非配置来处理的

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

使用类似R的bean的公共服务可能更容易,但是有些人喜欢拥有自己的存储库,以提高速度或确保安全


1

Coding Horror撰写了一篇很棒的文章,介绍如何在Windows上设置Subversion

遵循该教程,我能够在本地运行Subervsion和TortoiseSVN,并且得到了所需的培训。

就Git而言,最好动手对它们进行实验,以了解它们适合您的特定开发实践。


0

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

因此,我为客户端简单地安装了SVN Server和Tortoise SVN,并深入研究了深层次,我不知道该如何使用它。


0

开始在实际工作中使用SVN,但请尝试腾出时间摆弄Git和/或Mercurial。SVN对于生产来说相当稳定,但是最终您将面临一个需要分布式SCM的场景,届时您将得到适当的配置,新系统将足够成熟。


0

superjoe30写道

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

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

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


0

如果在窗户盒上,则快速且肮脏的解决方案是CVSNT。易于使用,只需对其进行设置即可,并且效果很好。

我自己更喜欢SVN,但这是快速使用的好工具。


0

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

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


0

@ superjoe30是的,绝对。一旦开始使用版本控制,就再也不会回头了。我用它来做所有事情,甚至是我的“ home”文件夹。

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


0

只需使用TortoiseSVN,您甚至可以在不知道实际Subversion命令的情况下生存下来……但这很糟糕。幸运的是,当您无价的存储库首次遭到破坏时,总会有一个“绝妙的机会”来认真学习它们。

是的,它发生了。


0

正如在其他地方多次提到的,请随便做。通过阅读《红皮书》中的快速入门指南,我可以立即在Windows下使用Subversion从零开始。将TortoiseSVN指向存储库后,我便开始从事商务活动。我花了一些时间才能记下更好的分数,但这些都是克服困难的小障碍。

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


使用文件:在多用户环境// URL的链接一般不会因为文件被访问的方式他们是最安全的想法很多更容易得到腐败。鉴于设置Subversion服务器非常简单,因此您实际上不需要使用file://。话虽这么说,我已经将file://用于我唯一的开发人员的项目,在这种情况下,它工作得很好。
吉姆·拉登

0

从个人经验来看,svn是我的建议。您甚至可以使用像Beanstalk这样的服务来提供免费帐户(显然有限制,但足以应付任何小规模的项目)来测试水域。但是,正如其他人所说的那样,git非常出色,可能值得研究。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.