1.git是什么?
git是一个开源的分布式版本控制系统,可以有效、高速地处理很小到非常大的项目版本管理,也是 Linus Torvalds (林纳斯·本纳第克特·托瓦兹),为了帮助管理Linux内核而开发的一个开放源码的版本控制软件。
2.为什么要使用git?
从一般开发者的角度来说,git有以下功能:
从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上
在自己的机器上根据不同的开发目的,创建分支,修改代码
到单机上自己创建的分支上提交代码
在单机上合并分支
把服务器上最新的代码fecth下来,然后跟自己的主分支合并
生成补丁(patch),把补丁发送给主开发者
看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人来提交,如果开发者可以自己解决,或者没有冲突,就通过
一般开发者之间解决冲突的方法,开发者之间可以使用pull命令解决冲突,解决完冲突之后在向主开发者提交补丁
从主开发者的角度(假设主开发者不用开发代码)看,git有以下功能:
查看邮件或者通过其他方式查看一般开发者的提交状态
打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)
向公共服务器提交结果,然后通知所有开发人员
3.git的优点
适合分布式,强调个体
公共服务器压力和数据量都不会太大
速度快,灵活
任意两个开发者之间可以很容易的解决冲突
离线工作
4.git的缺点
学习周期相对而言比较长
不符合常规思维
代码保密性差,一但开发者把整体克隆下来就可以完全公开所有代码和版本信息
git工作流程图
远程仓库:在局域网(本地)或互联网(远程)的一个主机,存放在代码库的主机或平台
本地仓库:在本地主机上的一个代码库,可以独立存在,也可以与远程仓库进行关联
工作区:对任何文件的修订(增删改),都先放在工作区,工作区不与任何仓库分支进行关联
暂存区:把修订的文件,从工作区经过add(添加)后与某一个仓库分支进行关联,只有进入缓存区的文件才能进行commit(提交)到本地仓库
基本命令
clone(克隆):从远程仓库中克隆代码到本地仓库
fetch(抓取):从远程仓库抓取到本地仓库,不进行任何的合并动作,一般操作比较少
checkout(检出):从本地仓库中检出一个仓库分支然后进行修订
add(添加):在提交前先将代码提交到暂存区
commit(提交):提交到本地仓库,本地仓库中保存修改的各个历史版本
pull(拉取):从远程仓库拉到本地仓库,自动进行合并(merge),然后放到工作区,相当于fetch+merge
push(推送):修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库