开始使用版本控制系统

76

我需要实现版本控制,即使只是在家里进行的开发。 我已经阅读了过去几年中关于Subversion的优点,准备在业余时间全身心学习,直到听说Git成为最新的版本控制系统。

在这种情况下,我应该等待一段时间并观察哪个更占优势呢? 它们各自的优点是什么?

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

另外,有没有建议可以介绍如何开始使用其中之一(教程等)。


我不认为这应该有特定的版本控制标签。我已经考虑过自己更改它,但我想知道其他人的想法。 - Brad Gilbert
34个回答

82

版本控制最重要的一点是:

开始使用它

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

从其他版本控制工具转换非常容易。

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

无论你选择哪一个都没关系。只要选择最容易使用的一个,并开始记录你的代码历史。你总是可以稍后迁移到另一个(D)VCS。

如果你正在寻找一个易于使用的图形界面,请看看TortoiseSVN (Windows)Versions (Mac) (由codingwithoutcomments建议)


编辑:

pix0r说:

Git有一些不错的功能,但除非你已经使用过CVS或Subversion等更标准的东西,否则你不会欣赏到它们。

这样。如果你不知道版本控制对你有什么作用,使用git就没有意义。

编辑2:

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


你有没有想过一种很棒的工具可以把代码仓库从一种版本控制系统转换到另一种呢?我完全同意“现在开始”,但我不禁要问,将所有历史记录和修订从一个版本控制系统迁移到另一个系统有多容易? - Steve T

19

使用Subversion吧,它易于设置、易于使用,并且有很多工具。任何未来的版本控制系统都会拥有从SVN导入的功能,所以如果您的需求增长了,不用担心无法更换。


16

Subversion Book 是学习此工具的最佳选择。虽然可能会有其他快速入门教程,但该书是你能找到的最好单一参考。

Git 有一些很好的特性,但除非你已经使用过像 CVS 或 Subversion 这样更标准的东西,否则你将无法欣赏它们。我绝对同意之前的评论者并建议从 Subversion 开始。


13

Eric Sink 自己说这本在线书有点过时。 - Jakub Narębski
有一本Eric Sink的印刷书籍(以及PDF版本),但我不记得下载URL了。虽然这本书对于理解版本控制系统的基础知识很好,但并不太公正。更多的是Veracity的营销宣传而不是真实信息。 - bahrep

11

选择SVN。如果您以前没有使用过源代码控制系统,那么这对您来说无论如何都不会有影响。

此外,使用源代码控制系统并不需要太多的学习。如果您学会了一种,以后可以很容易地切换到另一种。

SVN是一个非常好的工具,它应该可以满足您的大部分需求。而且由于它存在已经有了相应的图形用户界面工具(例如TortoiseSVN)。

选择SVN。


“如果你学会了一种,以后可以轻松切换到另一种。”这并不是完全正确的。许多人在从集中式版本控制系统转向分布式版本控制系统时都遇到了心态调整的问题。 - Afriza N. Arief

9

8
我使用过 RCS、CVS、SCCS、SourceSafe、Vault、Perforce、Subversion 和 Git。
我评估过 BitKeeper、Dimensions、arch、Bazaar、svk、ClearCase、PVCS 和 Synergy。
如果我今天要开始一个新的存储库,我会毫不犹豫地选择 Git
它是免费的、快速的,并且在积极开发中。
你可以使用 git-svn 将其作为任何 Subversion 存储库的客户端。
它非常棒。

5
根据我的使用经验,我不建议将Git作为版本控制的入门介绍。我已经使用Git几个月了,我的印象是它非常强大,现在我已经部分理解了它,也相对容易上手了。但是,学习曲线非常陡峭,即使我已经使用版本控制多年了。此外,它过于表达性强——它支持许多不同的工作流程和开发模型,但是唯一关于如何“最佳”使用它的指导要深入谷歌搜索几页,这使得新手很难掌握。
话虽如此,从空白状态开始使用Git可能实际上更容易——我的版本控制经验都是基于集中式版本控制(CVS、SVN、Perforce...),而我始终难以理解分布式模型的含义。我简要地看了一下其他DVCS,比如Bazaar和Mercurial,它们似乎更适合新手。
无论如何,正如其他人所说,Subversion可能是最容易掌握版本控制思维方式并获得VCS(回滚、分支、协作开发、更轻松的代码审查等)实践经验的方法。
哦,不要从CVS开始。它仍然在实际中使用,并具有优点,但我认为它有太多历史怪癖和实现问题(非原子提交!)而不适合学习。

5
如果你是唯一的程序员,那么在自己的计算机上使用源代码控制,这样做有何好处?这种做法是否良好?是否有相关的技巧或建议?
我认为git对此非常简单,因为您不需要服务器,也不需要担心输入URL等。您的版本控制内容只需位于项目内的.git目录中,然后您可以直接使用它。
以下是5秒钟的简介(假设您已安装git):
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扩展),它更快。 - Jakub Narębski

4

我推荐使用Subversion。它非常强大,易于使用,并且具有一些很棒的工具,例如TortoiseSVN

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接