Oli*_*Oli 253
SVN是一个回购和很多客户.Git是一个拥有大量客户回购的回购,每个回购都有一个用户.它被分散到人们可以在本地跟踪自己的编辑而无需将内容推送到外部服务器的程度.
SVN被设计为更加重要的地方,Git基于每个用户拥有自己的Git repo,并且那些repos推送更改回到中央.出于这个原因,Git为个人提供了更好的本地版本控制.
同时你可以选择TortoiseGit,GitExtensions(如果你在github上托管你的"中央"git-repository,他们自己的客户端 - 用于Windows的GitHub).
如果你想要退出SVN,你可能想要评估一下Bazaar.它是具有此分布式元素的下一代版本控制系统之一.它不依赖于POSIX,因此有本机Windows版本,它有一些强大的开源品牌支持它.
但是你甚至可能还不需要这些功能.了解分布式VCS的功能,优缺点.如果您需要的不仅仅是SVN优惠,请考虑一个.如果不这样做,您可能希望坚持使用SVN(当前)卓越的桌面集成.
Dar*_*ari 110
我从来不理解"git在Windows上不好"的概念; 我只在Windows下开发,我从来没有遇到任何git问题.
我肯定会推荐git over subversion; 它的功能多得多,并且允许"颠覆式开发"以颠覆从未真正实现过的方式.它几乎可以在任何可以想象的平台上使用,并且具有比您可能使用的功能更多的功能.
Von*_*onC 77
这是我对一些重复问题的回答的副本,此后删除了关于Git与SVN(2009年9月).
更好?除了通常的链接WhyGitIsBetterThanX,它们是不同的:
一个是基于分支和标签的廉价副本的中央VCS另一个(Git)是基于修订图的分布式VCS.另请参阅VCS的核心概念.
第一部分产生了一些错误的评论,假装两个程序(SVN和Git)的基本目的是相同的,但它们的执行方式完全不同.
为了澄清SVN和Git之间的根本区别,让我重新说一下:
SVN是版本控制的第三个实现:RCS,然后是CVS,最后是SVN管理版本化数据的目录.SVN提供了VCS功能(标签和合并),但它的标签只是一个目录副本(就像一个分支,除了你"不应该"触摸标签目录中的任何东西),它的合并仍然很复杂,目前基于meta -data添加以记住已经合并的内容.
Git是一个文件的内容管理(由合并文件的工具),演变成一个真正的版本控制系统的基础上,DAG(有向无环图的提交,其中分支数据更历史的一部分(而不是数据本身) ),标签是真正的元数据.
要说它们不是"根本上"不同,因为你可以达到同样的目的,解决同样的问题,是......在很多层面上都是假的.
关于那个旧(删除)答案的评论仍然坚持:
VonC:你在实现方面存在差异,实施中的基本差异(差异非常基本,我们都明确同意).
它们都是用于相同目的的工具:这就是为什么许多以前使用过SVN的团队已经成功地将它转储为Git.
如果他们没有解决同样的问题,那么这种可替代性就不存在了.
,我回答说:
"可替代性"......有趣的术语(用于计算机编程).
当然,Git几乎不是SVN的子类型.
您可以使用两者来实现相同的技术功能(标记,分支,合并),但Git不会妨碍您,并且您可以专注于文件的内容,而无需考虑工具本身.
您当然不能(总是)只是用Git替换SVN"而不改变该程序的任何理想属性(正确性,执行任务,......)"(这是对上述可替代性定义的引用):
同样,它们的性质根本不同(然后导致不同的实现,但这不是重点).
一个看到版本控制作为目录和文件,另一个只看到文件的内容(以至于空目录甚至不会在Git中注册!).
一般的最终目标可能是相同的,但您不能以相同的方式使用它们,也不能解决同一类问题(范围或复杂性).
小智 37
SVN的两个主要优点很少被引用:
大文件支持.除了代码,我使用SVN来管理我的主目录.SVN是唯一没有阻塞我的TrueCrypt文件的VCS(分布式或非分布式)(如果有另一个VCS可以有效处理500MB +文件,请纠正我).这是因为差异比较是流式传输的(这是非常重要的一点).Rsync是不可接受的,因为它不是双向的.
部分存储库(子目录)结帐/签入.Mercurial和bzr不支持这一点,而且git的支持是有限的.这在团队环境中很糟糕,但如果我想从我家里的另一台计算机上查看一些内容,这是非常宝贵的.
只是我的经历.
小智 24
在做了更多的研究,并审查了这个链接:https://git.wiki.kernel.org/articles/g/i/t/GitSvnComparison_cb82.html
(以下一些摘录):
阅读完所有这些之后,我确信Git是可行的方法(虽然存在一点学习曲线).我也在Windows平台上使用过Git和SVN.
在阅读上述内容之后,我想听听其他人的意见吗?
Gre*_*ill 11
我会建立一个Subversion存储库.通过这种方式,各个开发人员可以选择是否使用Subversion客户端或Git客户端(with git-svn).使用git-svn并不能为您提供完整Git解决方案的所有好处,但它确实为各个开发人员提供了对其自身工作流程的大量控制.
我相信Git在Windows上的运行时间与在Unix和Mac OS X上的运行时间相对较短(因为你问过).
Subversion具有出色的Windows工具,例如用于Explorer集成的TortoiseSVN和用于Visual Studio集成的AnkhSVN.
And*_*ard 11
有趣的是:我在Subversion Repos中托管项目,但是通过Git Clone命令访问它们.
虽然Google Code本身就说Subversion,但您可以在开发过程中轻松使用Git.搜索"git svn"表明这种做法很普遍,我们也鼓励你尝试一下.
在Svn存储库上使用Git给我带来的好处:
backup/public svn存储库供其他人查看当然svn,因为Windows最多是世界上的二等公民git(更多细节见http://en.wikipedia.org/wiki/Git_(software)#Portability).
更新:抱歉链接已损坏,但我已经放弃尝试使用包含括号的URI.[现在链接修复.-ed]
如果您的团队已经熟悉cvs或svn等版本和源代码控制软件,那么,对于一个简单的小项目(例如您声称的那样),我建议您坚持使用SVN.我对svn很满意,但对于我在django上做的当前电子商务项目,我决定使用git(我在svn-mode中使用git,也就是说,我使用集中式仓库来推送和拉动来自至少与其他一个开发者合作).另一个开发人员对SVN感到满意,虽然其他人的体验可能不同,但我们两个人都非常抱怨这个小项目的git.(如果重要的话,我们都是核心Linux用户.)
当然,您的里程可能会有所不同.
重点是,Git是一个分布式VCS,而Subversion是一个集中式VCS.分布式VCS有点难以理解,但有许多优点.如果你不需要这个优势,Subversion可能是更好的选择.
另一个问题是工具支持.您计划使用的工具可以更好地支持哪种VCS?
编辑:三年前我这样回答:
Git目前仅通过Cygwin或MSYS在Windows上运行.Subversion从一开始就支持Windows.由于Windows的git-solutions可能对您有用,因此可能存在问题,因为Git的大多数开发人员都使用Linux并且从一开始就没有可移植性.目前我更喜欢在Windows下使用Subversion进行开发.在几年内,这可能是无关紧要的.
现在世界发生了一些变化.Git现在在Windows上有很好的实现.虽然我在Windows上没有经常测试(因为我不再使用这个系统),但我非常有信心,所有主要的VCS(SVN,Git,Mercurial,Bazaar)现在都有适当的Windows实现.SVN的这个优势已经消失.其他要点(Centralized vs. Distributed和检查工具支持)保持有效.