一、Git是什么

Git是一款免费开源的分布式版本控制系统,可以对项目版本进行高效的管理。由Linux Torvaldds为帮助管理Linux内核开发,用了两周时间用C开发的一个开源版本控制软件,采用分布式版本库所以不需要服务器端软件支持。

二、集中式与分布式区别

集中式版本库集中存放在中央服务器的,工作的时候从中央服务器取得最新版的版本然后使用自己的电脑进行工作,工作完成后将自己的工作推送给中央服务器。缺点必须联网才能使用,如果中央服务器出现问题任何人都用不了,典型应用:CVS,SVN等。
廖雪峰网站图片
分布式没有中央服务器,每个人电脑上都有一个完整的 数据库,工作完成后通过将各自修改的内容推送给对方,从而实现相互协作。实际工作中分布式也有一台充当“中央服务器”(比如Github仓库),通过该服务器,就算对方不在线也能够交换大家的修改,但是如果没有这个中央服务器也可以正常工作,没有任何影响。典型应用:Git
廖雪峰网站图片Git与SVN区别在于Git把内容按元数据方式存储而SVN是按照文件,所有的版本控制系统都是把文件的元信息隐藏在.svn的文件夹里。Git内容存储使用SHA-1哈希算法,可以保证代码内容的完整性。
菜鸟教程图片Git和其他版本控制系统主要差别在于对数据的处理上,大部分版本控制系统以文件变更列表的方式存储信息,将他们存储的信息看作是一组基本文件和每个文件随时间逐步累积的差异 (基于差异的版本控制系统)。而Git是把数据看作是对小型文件系统的一系列快照,当提交更新或保存项目状态时,git就会对当时的全部文件创建一个快照并保存这个快照的索引。
基于差异的版本控制系统git的处理方式

三、Git的工作流程

知乎图片workspace:工作区
Index/Stage:暂存区,一般存放在.git目录下的index文件中
Repository:版本库,工作区中的隐藏目录.git,这个是Git的版本库
Remote:远程的版本库
在workspace本地完成工作后将代码add到stage暂存区,然后commit到版本库,为了方便其他人克隆将本地版本库上传类似Github的仓库中,工作时候从远程的版本库中直接克隆到本地。
简化流程:
在这里插入图片描述

四、理解工作区与暂存区

**工作区:**本地电脑上的文件夹,工作完成后还没有add到暂存区
**暂存区:**上传仓库前暂时存放区域,未对本地仓库生效。本地新建文件夹后进行初始化,生成.git隐藏文件夹,在该文件夹中有一个index文件夹,就是暂存区,也叫做索引。
本地仓库工作区中的,git隐藏目录,暂存区commit到本地仓库,通过push推送到远程仓库
远程仓库将修改内容提交到本地仓库后,你关闭电脑别人是无法更新你修改后的文件的,通过将本地仓库中的内容推送到远程仓库后,仓库里有什么修改了别人克隆后很快就知道了。

.git文件夹
E:\REPOSITORY\.GIT
├─hooks  #(钩子)存放一些shell脚本
├─info #该目录下有个exclude文件,存放一些仓库信息
├─logs #保存所有更新的引用记录
├─objects
│  ├─info
│  └─pack
└─refs
    ├─heads #存放最新一次提交的哈希值
    └─tags

logs:保存所有更新的引用记录
objects:存放所有的git对象
refs:目录下有heads和tags两个目录,heads存放最新一次提交的哈希值
COMMIT_EDITMSG:最新提交的一次提交注释(git commit -m “……”。即commit提交时引号里的注释),git系统不会用到,给用户一个参考
description:仓库的描述信息,主要给gitweb等git托管系统使用
config:git仓库的配置文件
index:暂存区(stage),一个二进制文件
ORIG_HEAD:HEAD指针的上次所在的位置的记录,也记录的一个哈希值
HEAD:记录了一个路径,映射到ref引用,能够找到下一次commit的前一次哈希值

参考

git
廖雪峰的网站
菜鸟教程
知乎_慕课网
部分图片分别来源于上述网站

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐