为什么要认真的学一下git呢?因为自己不小心删了公司的代码分支,吓出屎了。
git 历史以后再补上,目前是以最快的速度,过一遍git的核心操作,以及理解原理。
Git基础
1. 直接快照,而不是差异对比
那么首先,什么是快照?
关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。
git不关心具体文件哪里改变,而是专注于 整体是否变化。
2.几乎所有都是本地操作
3.时刻保持文件的完整性
这是真的,你永远没法clone一半的项目。
- 数据要进行校验和
- 以此结果作为数据唯一的标识
4.多数操作仅仅是添加数据
5.文件的三种形式 (重要)
首先来看三个工作区域
- working directory 工作目录 || 从
.git
目录的压缩中提取出来的,用于修改编辑- staged area 暂存区域 ||
.git
目录下的一个简单文件- git directory 也就是本地仓库, || 也就是
.git
目录
而Git工作的流程是:
1.(取出?)在工作目录下修改文件 - -> 2.对修改了的文件快照,到暂存区 - -> 3.提交更新,文件快照永远的转储在Git目录下
对应三种状态如下:
- modified(已修改)
- staged (已暂存)
- commited(已提交)
Git 安装
linux命令行,其他都可以下载安装
$ apt-get install git //ubuntu等Debian体系
$ yum install git-core // Fedora
配置
git 提供了 git config 这个工具来实现配置,相应的 gitconfig文件 存储在 3 个地方:
git config --system
读写/etc/gitconfig
系统所有用户git config --global
读写~/.gitconfig
用户目录下配置文件,只试用于该用户.git/config
是当前项目下的配置文件
每一级的配置都会 覆盖掉之前的同名配置,也就说 当前目录最大,系统范围 最小!
1. 用户信息
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
用户名和邮箱,说明了谁提交的,去掉--global
就是写在项目范围里的了
2. 配置文本编辑器 和 差异分析工具(暂时不深入研究)
$ git config --global core.editor emacs
$ git config --global merge.tool vimdiff
3. 查看配置
$ git config --list // 查看配置链表
$ git config user.name // 查看某一个配置
4. 获取帮助
$ git help <verb> //会打开一个解释网页
$ git config help // 获取配置的帮助