一、什么是GIT
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从小到非常大的项目版本管理。
二、集中式VS分布式
1. 集中式
CVS和SVN都是集中式版本控制系统,版本库是集中存放在中央服务器的。
干活的时候是用的个人电脑,需先从中央服务器取得最新版本然后开始干活,干完活再推送给中央服务器。
集中式版本控制系统最大的毛病是必须联网才能工作,若是局域网还好带宽大速度快,若是互联网网速慢提交一个10m的文件都需要5分钟。
集中式版本控制系统安全性低,若中央服务器出了问题,所有人都干不了活。
2. 分布式
分布式版本控制系统没有中央服务器,每个人的电脑上都是一个完整的版本库,版本库就在自己电脑,不需要联网就可以工作了。
多人如何协作的?如多人修改了同一个文件,只需把各自修改的推送给对方就可以看到对方修改的。
分布式版本控制系统安全性高,每个人电脑里都有完整的版本库,就算其中一人的电脑坏了,可以从其他人那里复制一个就可以了,不用担心数据丢失。
3. git工作流程
l 从远程仓库克隆git资源作为本地仓库
l 从本地仓库checkout代码进行代码修改
l 在提交本地仓库前先将代码提交到暂缓区
l 提交修改,提交到本地仓库;本地仓库保存修改的各个历史版本。
l 在需要和团队成员共享代码时,可以将修改代码push推送到远程仓库。
4. Git的几个核心概念
工作区(workspace):存放项目代码的地方
暂存区(Index/stage):用于临时存放你的改动,只是一个文件,保存即将提交的文件列表。
版本库(Repository):安全存放数据的位置,有你提交到所有版本的数据。Head指向是最新放入仓库的版本。
远程仓库(Remote):托管代码的服务器。
5. Git分支的理解
分支:
创建一个属于自己的分支,别人看不到还在原来分支工作,而自己在自己的分支干活,想提交就提交,开发完毕再一次性合并到原来分支上,既安全还不影响别人工作。
创建与合并分支:
在版本回退我们可以看到,每次提交git都把他们串成一条时间线,这条时间线就是一个分支。
注:只有一条时间线,在git里叫该分支为主分支,即master分支。Head严格来说不是指向提交而是指向master,master才是指向提交的,head指向是当前分支。
注:每次提交,master分支就是向前移动一次,随着不断提交,master分支的线也越来越长。
注:当创建新的分支dev指针,指向和master相同的提交,再把head指向dev,表示当前分支再dev上。从现在开始对工作区的修改和提交都是针对dev分支了。新提交一次后,dev指向向前移一步,而master指针不变。
注:dev工作完成,就可以将dev合并到master上。Git如何合并?就是直接把master指向dev的当前提交,就完成合并了。所以git合并分支很快,改改指针,工作区内容不变。
注:合并完成后,还可以将dev分支删除,删除dev分支就把dev指针给删除,我们就剩一条master分支。
示例: