工作需要,原本不太会使用git,特地花时间好好研究,下面是git的一些原理和操作方法,写来方便理解,大家也可以浏览看看,希望会有所帮助。
一、什么是版本控制
所谓的版本控制(vsc)就是是一种记录一个或若干文件内容变化,以便将来查阅特定 版本修订情况的系统
二、那么如何让在不同系统上的开发者协同工作?,
集中化的版本控制系统CVCS应运而生
优点:单一的集中管理的服务器,保存所有的文件版本,协同工作的人通过客户端连接到这台服务器,取出最新的文件或者提交更新,这也是版本控制系统的标准做法,其实不难理解(每个人都可以清楚看到项目中其他人再做什么,管理员也可以轻松掌控每个开发者的权限)
缺点:在于中央服务器的单点故障,如果服务器宕机一个小时,这一小时内谁也无法进行协同工作,如果中心数据库所在磁盘发生损坏,并且没有做恰当备份,那么所有数据都会丢失
工作原理图如下
基于集中化版本控制的缺点,分布式版本控制系统诞生
分布式版本控制系统:代码可以被完整的镜像(一种文件形式)下来,每一次克隆操作都是一次对代码仓库的完整备份
流程图如下:
三、进入正题:GIt
几大特点:
1.直接记录快照,而非差异比较:(重要区别)
其他大部分系统以文件变更列表的方式存储信息,这类(CVS、Subversion、Perforce、Bazaar 等等)将他们保存的信息看做是一组基本文件和每个文件随时间逐步累积的差异,
git则把数据看做是对小型文件系统的快照,每次提交或更新,git主要对当时的全部文件制作一个快照并保存这个快照的索引,如果文件没有修改,git不在重新存储该文件,
gi更像 是一个小型文件系统
2.近乎所有操作都是本地执行
3.保证完整性:
Git 中所有数据在存储前都计算校验和,然后以校验和来引用。这意味着不可能在 Git 不知情时更改任何文件内 容或目录内容。若你在传送过程中丢失信息或损坏 文件,Git 就能发现。
4.git一般只添加数据
你执行的 Git 操作,几乎只往 Git 数据库中增加数据。很难让 Git 执行任何不可逆操作,或者让它以任何方式清 除数据。
5.三种状态:
已提交:数据已经安全存在于本地仓库中(committed)
已修改:表示已经做了修改但没保存到数据库中(mofified)
已暂存:表示对一个已修改文件的当前版 本做了标记,使之包含在下次提交的快照中(staged)
由此引入 Git 项目的三个工作区域的概念:
Git 仓库(Repository)、工作目录(work Directory)以及暂存区域(staging)==》
Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。这是 Git 中最重要的部分,从其它计算机克隆 仓库时,拷贝的就是这里的数据。
工作目录是对项目的某个版本独立提取出来的内容。这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘 上供你使用或修改。
暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。有时候也被称作`‘索 引’‘,不过一般说法还是叫暂存区域。
===================================================注意以上这些区域都属于本地操作===========================================================
四、git使用
(一)安装,这里不再说明
(二)初次运行前GIT的配置
git config :Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量。这些变量存储在三个不同的位置:
1. /etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置。 如果使用带有 --system 选项的 git config 时,它会从此文件读写配置变量。
2. ~/.gitconfig 或 ~/.config/git/config 文件:只针对当前用户。 可以传递 --global 选项让 Git 读写此文件。
3. 当前使用仓库的 Git 目录中的 config 文件(就是 .git/config):针对该仓库。 每一个级别覆盖上一级别的配置,所以 .git/config 的配置变量会覆盖 /etc/gitconfig 中的配置变量。 在 Windows 系统中,Git 会查找 $HOME 目录下(一般情况下是 C:\Users\$USER)的 .gitconfig 文 件。Git 同样也会寻找 /etc/gitconfig 文件,但只限于 MSys 的根目录下,即安装 Git 时所选的目标位置。
用户信息:
装完之后第一件事就是设置用户名和密码,因为每次提交和刷新都会使用,并且它会写入到你的每一次提交中,不可更改:
$ git config --global user.name "John Doe" $ git config --global user.email johndoe@example.com
文本编辑器配置:我理解为配置集成环境的开发编辑器,git默认的事vim,配置其他可以运行下方命令:
$ git config --global core.editor emacs
检查配置信息:
git config --list
检查单个配置:
git config <key>: 例如:git config user.name
--list下会出现:
$ git config --list user.name=John Doe user.email=johndoe@example.com color.status=auto color.branch=auto color.interactive=auto color.diff=auto
获取帮助:git help
获取帮助手册
$ git help <verb> $ git <verb> --help $ man git-<verb>