`
Kai_Ge
  • 浏览: 69146 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

git,svn,github,码云之间联系区别【转载】

阅读更多

1.git与github(https://www.oschina.net/)的区别

2.码云(http://git.oschina.net/)简介

码云是开源中国社区2013年推出的基于 Git 的完全免费的代码托管服务,这个服务是基于 Gitlab 开源软件所开发的,我们在 Gitlab 的基础上做了大量的改进和定制开发,目前已经成为国内最大的代码托管系统,致力于为国内开发者提供优质稳定的托管服务。

码云主要功能

码云除了提供最基础的 Git 代码托管之外,还提供代码在线查看、历史版本查看、Fork、Pull Request、打包下载任意版本、Issue、Wiki 、保护分支、代码质量检测、PaaS 项目演示等方便管理、开发、协作、共享的功能。

 

3.码云与 github 的对比

优点:服务器在国内,在国内访问速度比github快很多,可以免费让自己的仓库他人不可见,但是否安全就不知道了。访问速度很快,支持svn,git两种方式,免费账户同样可以建立 私有项目,而 github 上要建立私有项目必须 付费

缺点:每个仓库有1G的容量限制,把Unity工程弄上去一下就超了。

 

4.git和svn的区别

 

GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应GIT提供的一些概念和特征。所以,这篇文章的主要目的就是通过介绍GIT能做什么、它和SVN在深层次上究竟有什么不同来帮助你认识它。

1.GIT是分布式的,SVN不是:

这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。如果你能理解这个概念,那么你就已经上手一半了。需要做一点声明,GIT并不是目前第一个或唯一的分布式版本控制系统。还有一些系统,例如BitkeeperMercurial等,也是运行在分布式模式上的。但GIT在这方面做的更好,而且有更多强大的功能特征。

GIT跟SVN一样有自己的集中式版本库或服务器。但,GIT更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库/服务器上chect out代码后会在自己的机器上克隆一个自己的版本库。可以这样说,如果你被困在一个不能连接网络的地方时,就像在飞机上,地下室,电梯里等,你仍然能够提交文件,查看历史版本记录,创建项目分支,等。对一些人来说,这好像没多大用处,但当你突然遇到没有网络的环境时,这个将解决你的大麻烦。

同样,这种分布式的操作模式对于开源软件社区的开发来说也是个巨大的恩赐,你不必再像以前那样做出补丁包,通过email方式发送出去,你只需要创建一个分支,向项目团队发送一个推请求。这能让你的代码保持最新,而且不会在传输过程中丢失。GitHub.com就是一个这样的优秀案例。

有些谣言传出来说subversion将来的版本也会基于分布式模式。但至少目前还看不出来。

2.GIT把内容按元数据方式存储,而SVN是按文件:

所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。如果你把.git目录的体积大小跟.svn比较,你会发现它们差距很大。因为,.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。

3.GIT分支和SVN的分支不同:

分支在SVN中一点不特别,就是版本库中的另外的一个目录。如果你想知道是否合并了一个分支,你需要手工运行像这样的命令svn propget svn:mergeinfo,来确认代码是否被合并。感谢Ben同学指出这个特征。所以,经常会发生有些分支被遗漏的情况。

然而,处理GIT的分支却是相当的简单和有趣。你可以从同一个工作目录下快速的在几个分支间切换。你很容易发现未被合并的分支,你能简单而快捷的合并这些文件。

4.GIT没有一个全局的版本号,而SVN有:

目前为止这是跟SVN相比GIT缺少的最大的一个特征。你也知道,SVN的版本号实际是任何一个相应时间的源代码快照。我认为它是从CVS进化到SVN的最大的一个突破。因为GIT和SVN从概念上就不同,我不知道GIT里是什么特征与之对应。如果你有任何的线索,请在评论里奉献出来与大家共享。

更新:有些读者指出,我们可以使用GIT的SHA-1来唯一的标识一个代码快照。这个并不能完全的代替SVN里容易阅读的数字版本号。但,用途应该是相同的。

5.GIT的内容完整性要优于SVN:

GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。这里有一个很好的关于GIT内容完整性的讨论 –http://stackoverflow.com/questions/964331/git-file-integrity

分享到:
评论
2 楼 Kai_Ge 2017-09-14  
Git诞生11年后,BitKeeper宣布开源
在Linus Torvalds开发出了Git分布式版本控制系统11年后,BitKeeper宣布在Apache 2.0许可证下开源。Linus 是在BitKeeper停止向开源社区提供免费版本后开发了Git,今天Git和其它自由软件版本控制系统已经统治了编程社区,BitKeeper变得无关紧要了。BitKeeper由BitMover公司开发,该公司CEO Larry McVoy与Linus曾是好友, Larry说服Linus在内核开发中使用BitKeeper。而BitKeeper在免费使用的许可证中加入很多限制条件,惹恼了内核开发者,最终促使Linus开发出了毁灭BitMover的Git。
[日期:2016-05-11] 来源:solidot.org  作者:Linux
1 楼 Kai_Ge 2017-09-14  
很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。

Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?

事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!

你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。

不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。

安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。

Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的:

Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。

Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。

相关推荐

    git和svn学习入门教程

    现在使用git的比svn多了,但是git操作比svn复杂,上传git和svn的简单教程

    2018svn,svn高级,git&github;系列视频教程

    2018svn,svn高级,git&github;系列视频教程,分享给大家,仅供学习

    SVN git github-版本控制服务器部署与实践

    SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。也是就是CVS的接班人!

    git&github;&svn;最全视频教程

    Git&GitHUP; 01.前面的话 02.为什么要使用版本控制 03.版本控制介绍 04.Git简史 05.Git优势 06.Git程序安装过程 07.Git结构 08.Git和代码托管中心 09.本地库和远程库的交互方式 10.本地库初始化 。。。

    svn及git-github 使用及事项.xmind

    svn git 使用注意事项

    Git&GitHub;学习笔记

    这方面 SVN 采用的是增量式管理的方式,而 Git 采取了文 件系统快照的方式。  权限控制  对团队中参与开发的人员进行权限控制。  对团队外开发者贡献的代码进行审核——Git 独有。  历史记录  查看修改人...

    擅用Git弥补SVN的不足

    详细描述如何配置git-svn、git、svn、github建立便利的开发环境。不要错过这套强大的配置库管理组合拳哦。

    使用git和github管理自己的项目---基础操作学习

    我是通过看廖雪峰的git教程...我这里记录git的学习笔记,方便随时参考,具体的git的原理、github的原理、集中式和分布式版本控制的区别、版本控制的概念和原理、Git和其他版本控制工具比如SVN的区别、以及更多的相关

    SVN迁移到Git的过程(+一些技巧)

    关于在VCS中SVN和Git之间的迁移(Clone)这个部分网上已经有大批的文章介绍,而且都非常不错,...SVN迁移到Git,当然要清楚gitsvn命令了。首先请在github上面创建一个repository,这个简单,就不说了,然后就是使用强

    本地项目如何上传到码云远程仓库

    版本控制常用工具:git和svn,git分布式版本控制(代码仓库:本地仓库和远程仓库),svn集中式版本控制(远程仓库)。 远程仓库:码云/GitHub创建的仓库; 本地仓库:自己电脑中的仓库; commit:提交代码到本地仓库;...

    版本控制工具 Git 32位+64位 ,TortoiseSVN 32位+64位

    本压缩包为版本控制工具,包含有 Git 32位+64位 ,TortoiseSVN 32位+64位,用于开发过程中对项目的版本进行开分支、控制、合并等。具体安装又不懂的,可以看博主的博文。

    git-info:git-info是一个git子命令,显示有关Git信息库的信息,如`svn info'

    git-info概要git-info-显示有关Git信息库的信息,如`svn info'如何设置只需将这些脚本放在PATH的目录之一中即可。如何使用git infogit info ~/src/somewhere/somefilegit info some/relative/file_or_directorygit ...

    wp-plugin-in-github:我用来管理和将WordPress插件从github部署到svn的shell脚本的集合

    clone-from-svn-to-git.sh-使用此脚本将WordPress插件从SVN克隆到git / github deploy-plugin.sh-使用此脚本将WordPress插件更新从git / github推送到SVN readme-converter.sh-使用此脚本在Github markdown和...

    Git权威指南PDF完整版

    4.3 思考:git config 命令的各参数有何区别/ 63 4.4 思考:是谁完成的提交/ 65 4.5 思考:随意设置提交者姓名,是否太不安全/ 67 4.6 思考:命令别名是干什么的/ 68 4.7 备份本章的工作成果/ 69 第5章 Git 暂存区/ ...

    github使用手册.pdf

    Learn Git and GitHub without any code! Using the Hello World guide, you’ll create a repository, start a branch, write comments, and open a pull request.

    paddle:提交到GitHub并自动将其同步到SVN

    提交到GitHub并自动将其同步到SVN。 支持最新或特定提交的同步。 与Github组织合作。 在推送到SVN之前运行.paddle.sh(如果可以在git存储库中找到它),如果需要运行composer或删除文件等,将非常有用。 安装 ...

    开源GitHub权威介绍GotGitHub.zip

    用SVN操作GitHub 6.2.2. 用Hg操作GitHub 6.1.1. 数据的粘贴和引用 6.1.2. Gist背后的Git库 6.1.3. Greasemonkey 6.1.4. 命令行操作Gist 6.1. GitHub:Gist 6.2. 其他版本控制工具支持 6.3. 客户端工具 6.4....

    一张图读懂SVN和Git原理(附环境搭建和使用)

    先上图(个人整理):讲概念(个人理解): SVN:全称Subversion,是一种集中式管理的版本控制工具,分为服务器...Git:是一种分布式管理的版本控制工具,分为远程版本库(如Github)和本地版本库(.git节点),

    使用git迁移Laravel项目至新开发环境的步骤详解

    简单说来,git就是Github开发的VCS(Version Control System),即版本控制系统。如果你使用过SVN,那么你应该很清楚版本控制是什么。 本文的示例环境是Ubuntu 16.04 LTS,Windows的朋友可以在Git bash下进行操作。 ...

Global site tag (gtag.js) - Google Analytics