[一、Git总体介绍]
本章导航----Git总体学习思惟导图
git
[二、版本控制简介]
本章导航----版本控制思惟导图
程序员
[版本控制简介]
版本控制是维护项目/工程的标准作法,能追踪项目/工程从创建到完成的过程,是一种记录若干文件内容变化的方法,便于查看项目文件内容变化以及版本修订状况的系统。github
[为何要学习版本控制]
a:备份多个版本,浪费存储空间,花费时间长。
b:难以恢复至之前的历史版本,容易引起BUG,解决代码冲突困难。
c:难于追溯问题代码的修改人和修改时间、修改内容、日志信息。
d:项目升级,版本发布困难。
e:没法进行权限控制。 好比 测试人员:只读;开发人员:模块权限。
f:开发团队在工做过程当中没法多条生产线同时推动任务,效率慢等。安全
[经常使用的版本控制工具]
集中式版本控制工具表明:SVN(所谓的集中式就是文件都集中保存在一台服务器上)
分布式版本控制工具表明:Git(所谓的分布式就是文件保存在多台服务器上)服务器
[三、Git与SVN比较]
本章导航----Git与SVN思惟导图
分布式
[Git-与SVN记录文件的差别]
Git和其余版本控制系统的主要差异在于,Git 只关心文件的总体是否发生变化。而SVN这类版本控制系统则只关心文件内容的具体差别。SVN这类系统每次记录有哪些文件做了更新,以及都更新了哪些行的什么内容。然而 Git 并不保存这些先后变化的差别数据。实际上,Git更像是把 变化的文件 做一个快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍全部文件的指纹信息(Hash值)并对文件做一快照,而后保存一个指向此次快照的索引。为提升性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照做一连接。svn
[Git-优势]
a:分布式,强调个体
b:公共服务器压力和数据量都不会太大
c:离线工做,每一个人的本地仓库,大部分操做在本地库完成,不须要联网(SVN作不到)
d:分支操做很是快捷流畅(重点介绍)
e:能够吃后悔药, 尽量添加数据而不是删除或修改数据(删除或修改不容易恢复,而每次添加一个版本,历史版本都有)
f:速度快、灵活, 有能力高效管理相似 Linux
g:内核同样的超大规模项目(速度和数据量)工具
[SVN-简介]
SVN 属于集中式版本管理控制系统,服务器中保存了全部文件的不一样版本,而协同工做人员经过链接svn服务器,提取出最新的文件,获取提交更新。Subversion 项目的初衷是为了替换当年开源社区最为流行的版本控制软件CVS,在CVS的功能的基础上有不少的提高同时也能较好的解决CVS系统的一些不足。性能
[SVN-缺点]
集中管理方式在必定程度上看到其余开发人员在干什么,而管理员也能够很轻松掌握每一个人的开发权限。可是相较于其优势而言,集中式版本控制工具缺点很明显:
a:服务器单点故障;
b:必须链接在SVN服务器上,不然不能提交,对比,还原等;学习
[四、Git本地工做区域]
本章导航----Git本地工做区域思惟导图
[五、Git与代码托管平台]
本章导航-----Git与代码托管平台思惟导图
b:GitHub:是一个基于Git的远程代码托管平台(网站),能够在github上创建一个远程库,能够将本地库的代码提交到远程库,这样你的每次提交,别人也均可以看到你的代码,同时别人也能够帮你修改你的代码,这种开源的方式很是方便程序员之间的交流和学习.
[代码托管平台]
局域网环境:GitLab(可自行搭建)
外网环境:GitHub,码云
[本地库和远程库]
a:团队内部协做开发
b:远程跨团队协做开发