SVN集中式版本控制:每一个人的版本都是提交到服务器,服务器坏了就雪崩。
git分布式版本控制: 安全,每人本地有个版本库,每一个人均可以充当‘服务器git
它的使用流程不须要联机,能够先将对代码的修改,保存在本机。等上网以后,再实时推送过去。github
git
提交是个本地操做,相对svn
闪电通常。安全
本地包含了完整的日志,无需网络服务器
git向远程服务器推送提交内容相比svn更快网络
和 SVN不一样,一个Git项目通常只在项目的根目录下建一个“.git”目录,而SVN则会在项目的每个目录下建一个”.svn”目录ssh
Git把全部的历史提交信息所有存储在“Git目录”里,它就是一个Git项目的仓库;你对本地的源代码进行编辑修改后建立的提交也都会先保存在这里面,而后再推送到远端的服务器。当咱们我把项目目录和“Git目录”一块儿拷到其它电脑里,它能立刻正常的工做(全部的提交信息全都保存在Git目录里);甚至能够只把“Git目录”拷走也行,可是要再签出(checkout)一次。分布式
svn
在模型上是没有分支和tag
的。tag
是经过目录权限限制(对开发只读)来保证不变。svn
git
模型上支持tag
,保证只读。工具
git
:合并操做保留原有的提交过程(即保留了合并来源的做者、提交次数、分离提交的内容)。spa
svn
:合并操做把来源多个提交合并成了一个合并提交,即在提交历史中Crash了天然的提交过程。
git
:重命名(不管文件还有目录)提交 , 能够合并上文件重命名前的这些文件的提交。
svn
:重命名(不管文件还有目录)提交后,你本地/或是分支上 有文件重命名前的这些文件的修改或提交,在作合并操做时,恭喜,你会碰上传说中难搞的树冲突!
由于害怕svn
树冲突,在包名调整(重命名目录)或类名调整(重命名文件)前,我不得不先向一块儿开发的组员广播:
git
:有本地分支
svn
:无本地分支
git
能够方便建立本地分支,且建立分支的时间是O(1)
,即瞬间就建立好了。因为分支能够是本地的,也就不存在svn
目录权限的问题。
git中全部数据在存储前都计算校验和,而后以校验来引用,因此你在传输中丢失文件,git都知道。具有断点续传功能。
(1)git的入门,稍微有点麻烦,须要在本机建立一个ssh的钥匙。
(2)图形化操做界面不及svn那么好用
git是一个很是强大的版本管理工具。github则是一个基于git的日益流行的开源项目托管库。
Git把全部的历史提交信息所有存储在“Git目录”里,它就是一个Git项目的仓库;你对本地的源代码进行编辑修改后建立的提交也都会先保存在这里面,而后再推送到远端的服务器。当咱们我把项目目录和“Git目录”一块儿拷到其它电脑里,它能立刻正常的工做(全部的提交信息全都保存在Git目录里);甚至能够只把“Git目录”拷走也行,可是要再签出(checkout)一次。