Git

一、什么是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分支。

示例:

Git基本操作




原文链接:,转发请注明来源!