我应该使用SVN还是Git?

326

我正在启动一个新的分布式项目。我应该使用SVN还是Git,为什么?


5
是的,Git 可以在 Mac 上使用。如果您使用 macports 安装它,甚至会安装一个 Mac 前端来进行提交和浏览接口。 - Seth Johnson
3
可能是 https://dev59.com/anVD5IYBdhLWcg3wXaid 的重复问题。 - user177800
3
@Andre - 因为你可以使用MonoDevelop,所以我从Vault切换到SVN,这样我就可以在我的Mac或PC上开发.NET软件。Vault没有客户端,但是SVN有 :-) - schmoopy
4
Github/Bitbucket与Sourcetree结合起来真是太棒了!-http://www.sourcetreeapp.com/ - thecodeassassin
错误:文件<file>大小为123.23 MB;这超过了GitHub的100 MB文件大小限制!!!! - Fuzzy Analysis
显示剩余6条评论
21个回答

7

毫无疑问是svn,因为在git的世界中,Windows 最多只是一个二等公民(有关详细信息,请参见http://en.wikipedia.org/wiki/Git_(software)#Portability)。

更新:对于链接失效表示抱歉,但我已经放弃尝试让 SO 使用包含括号的 URI。[链接现已修复。-ed]


1
FYI:请用尖括号括起URL,或用%28和%29替换括号。 - PhiLho
1
URL编码对于语法是否有效? - Hank Gay
16
这是不正确的恐吓宣传。Git 在 Windows 上表现非常出色,而 SVN 在任何平台上都表现不佳。 - Charlie Flowers
6
对于所有给我点踩的人,请回去看看大约在2008年开发者的评论:很明显Linus和他的团队并不关心支持Windows。这很好:我也不想这么做,而且我的软件远没有期望从文件系统中获得类POSIX行为的版本控制系统那么复杂。然而,如果你看一下上下文,把我的声明描述为FUD似乎是不公平的。 - Hank Gay
2
也许在2008年,Windows上的git表现不佳,但自从2009年开始我一直在使用msysgit,它运行非常顺畅。这包括gitk,即GitHub的离线桌面等效工具。 - Dan Dascalescu
显示剩余2条评论

6

我会选择SVN,因为它使用更广泛,知名度更高。

我猜,Git对于Linux用户来说会更好。


1
然而,这种情况正在迅速改变。SVN的市场份额正在下降,而GIT正在上升:例如:https://www.wikivs.com/wiki/Git_vs_Subversion#Popularity或http://programmers.stackexchange.com/questions/136079/are-there-any-statistics-that-show-the-popularity-of-git-versus-svn#136207 - Zelphir Kaltstahl
@Zelphir:我不会说7年很快,但是是的,GIT正在获得市场份额,而且在合并文件方面尤其更好。 - Burkhard

4

问题就在于这里:

你的开发是否是线性的?如果是,那么你应该坚持使用Subversion。

但是,如果你的开发不是线性的,也就是说,你需要为不同的更改创建分支,然后将这些更改合并回主要的开发线(Git中称为主分支),那么Git就会对你有更多的帮助。


4
我已经使用 SVN 很久了,但每当我使用 Git 时,我感到 Git 更强大、轻量级,并且虽然需要一点学习曲线,但比 SVN 更好。我注意到的是,每个 SVN 项目随着它的增长,会变成一个非常大的项目,除非它被导出。相反,Git 项目(连同 Git 数据)非常轻便。
在 SVN 中,我与从初学者到专家的开发人员打过交道,而新手和中级开发人员似乎会在他们从另一个 SVN 项目复制一个文件夹以便重新使用它时引入文件冲突。而在 Git 中,我认为你只需要复制文件夹,它就可以工作,因为 Git 不会在其所有子文件夹中引入 .git 文件夹(就像 SVN 那样)。
在长时间的使用 SVN 后,我最终考虑将我的开发人员和我转移到 Git,因为它易于协作和合并工作。而且一个巨大的优势是,本地副本的更改可以尽可能地提交,并且最后一次推送到服务器上的分支,而不像 SVN 那样必须时不时地将更改提交到服务器上的仓库中。请问有谁可以帮我决定是否应该真正使用 Git?

我不会称呼任何将受SVN控制的文件夹复制到另一个项目中以便重用并且没有预料到明显问题的开发人员为“中级”。我会称呼他们为新手。是的,你是正确的,这是由.svn子文件夹引起的,它告诉SVN这些文件属于哪个仓库。如果用户删除了这个.svn子文件夹,那么他们就可以将该文件夹导入到新的SVN项目中。我自己仍在使用SVN,但我的需求很少。GIT非常适合大型项目。 - dyasta
3
最新的svn客户端不需要在每个子目录下添加一个".svn"文件夹,这样可以在出现复制错误之前就进行修复。 - Edwin Buck

4

Git目前还不支持Windows原生操作系统,它是针对Posix系统进行优化的。但是,通过运行Cygwin或MinGW,可以成功地运行Git。

如今,我更喜欢使用Git而不是SVN,但如果你来自CVS、SVN领域,需要一段时间才能适应。


8
定义“本地”。msysgit运行良好。 - Milan Babuškov

4

我可能会选择Git,因为我觉得它比SVN更强大。有一些便宜的代码托管服务可供使用,非常适合我-您不必备份或进行任何维护工作-GitHub是最明显的选择。

话虽如此,我并不了解Visual Studio与不同源代码管理系统的集成。我想像使用SVN的集成会更好。


3

我可以进一步解释一下问题,问Git在MacOS上是否工作良好?

回复评论:谢谢您的消息,我一直期待着尝试它。我会在家里的Mac上安装它。


1
是的,它运行得非常好。我通过MacPorts安装了它,并且每天都在使用它。 - Greg Hewgill
它确实如此。在任何基于POSIX的系统上都非常好用(Unix,Linux,Solaris,BSD等)。问题实际上只存在于Windows上。 - Oli
git-gui和gitk在OS-X下与Linux和Windows下的工作方式可能是相同的。与tortoiseSVN不同,据我所知,它仅适用于Windows操作系统。 - David Schmitt
@David Schmitt:嗯,http://tortoisesvn.tigris.org/将其称为“Subversion的Windows Shell扩展”,所以我想是的。;-) - SamB
@Robert:你在 OS X 上使用 Git 的体验如何? - David Schmitt

3

你试过Bzr吗?

它非常不错,Canonical(Ubuntu的制造商)制作了它,因为他们不喜欢市场上其他的任何东西...


Windows的支持确实需要在这方面做一些工作。虽然并不是完全不能使用,我最近在Windows下进行了相当多的编程,并且一直很愉快地使用它,但还是有点需要改进的。 - SamB
几乎在所有情况下,人们开发软件的原因是因为他们不喜欢市场上已有的其他选择。这几乎占据了操作系统的全部时间。 - WhyNotHugo
@Hugo 在开源领域,如果他们喜欢市场上的其他东西,他们会为其做出贡献,而不是创造新的东西。 - yingted
这根本不是问题的答案。 - Albert van der Horst
@AlbertvanderHorst不是的,那个问题是在SO的“荒野西部”时代被回答的,当时没人知道更好的方法,所以提供了一个替代方案。可能是我匆忙之间,也拼错了Canonical的名字。真丢脸! - Omar Kooheji

3

2

正如其他人所指出的那样,在Windows下,SVN似乎是一个不错的选择。

如果你的一些开发者想尝试GIT,他们可以始终使用GIT-SVN,其中SVN存储库被重新创建为GIT存储库。然后,他应该能够在本地使用GIT工作,然后使用SVN将其更改发布到主存储库。


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