写这边专栏之前,我觉得有必要普及一下版本管理软件的相关概念,如果你还没有这个概念,不凡随着这篇文章来大致了解一番。
记得我第一份工作那时候是个小团队,当时对版本管理概念并不是很强,我们使用的是一个叫做dropbox的东西,但是也没有什么觉得不方便的,因为基本一个人负责一个项目的所有事情,从开发到测试包括一些策划的工作(当时其实并不知道还有策划这种工种),除了配备一个美术来负责一些素材和界面方面的设计,其他的基本要靠自己,这段是题外话。
Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
GIT的简介与使用
=============
# 1. Git 基础
>1.1 Git是一个开源的分布式版本控制系统
Git跟Svn一样有自己的集中式版本库和Server端,但Git更倾向于分布式开发,因为
每一个开发人员的电脑上都有一个本地版本库,所以即使没有网络也一样可以Commit,
查看历史版本记录,创建项 目分支等操作,等网络再次连接上Push到Server端。 这
也就意味着大部分操作都是在本地执行的
>1.2 直接记录快照,而非差异比较
Git 和其他版本控制系统的主要差别在于,Git 只关心文件数据的整体是否发生变化,
而大多数其他系统则只关心文件内容的具体差异。
Subversion,Perforce,Bazaar 等等:

git:

>1.3 Git工作区,暂存区,版本库概念
工作区(Working Directory):
就是你在电脑里能看到的目录,比如我们的mini_client文件夹就是一个工作区:
版本库(Repository):
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库,Git的版本库里存了很
多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创
建的第一个分支master,以及指向master的一个指针叫HEAD

基本的 Git 工作流程如下:
在工作目录中修改某些文件。
对修改后的文件进行快照,然后保存到暂存区域。
提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。
# 2. 如何使用GIT
>2.1 检查当前文件状态
要确定哪些文件当前处于什么状态,可以用 git status 命令。刚克隆下来的仓库的干净的,
nothing to commit, working directory clean.
假设我们现在修改了一个xiaorui.txt得问文件,那么这个文件会被标记成已修改,如果这个
文件是我们新建的,那么这个文件会被标记成未被追踪的。
>2.2 追踪或者暂存已修改的文件
我们使用 git add 命令, 实际上就是把要提交的所有修改放到暂存区(Stage)
>2.3 忽略某些文件
一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。

>2.4 提交更新
现在的暂存区域已经准备妥当可以提交了。在此之前,请一定要确认还有什么修改过的或新建的文件还没有 git add 过,否则提交的时候不会记录这些还没暂存起来的变化。所以,每次准备提交前,先用 git status 看下,是不是都已暂存起来了,然后再运行提交命令 git commit
*
## 2.5 查看提交历史
在提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用 git log 命令查看。
<
pre
><
code
>
$ git log
commit 259113ff93de6dd45a138ed28bd407ca9689af28 (HEAD -> master)
Author: xiaorui
<
xiaorui@
ztgame.
com
>
Date: Mon May 7 16:05:57 2018 +0800
task:00 changed file xiaorui.txt
commit 4cd3f11944c653996482c20526a572f5c24c5eaf
Author: xiaorui
<
xiaorui@
ztgame.
com
>
Date: Mon May 7 16:05:07 2018 +0800
task:00 add new file xiaorui.txt
commit 127b362ad33e056ccaec042beee96636381efb91 (origin/master)
Author: xiaorui
<
xiaorui@
ztgame.
com
>
Date: Mon May 7 15:51:42 2018 +0800
task:00 first
</
code
></
pre
>
看起来像这样的,默认不用任何参数的话,git log 会按提交时间列出所有的更新,最近的更
新排在最上面。看到了吗,每次更新都有一个 SHA-1 校验和、作者的名字和电子邮件地址、
提交时间,最后缩进一个段落显示提交说明。 这个SHA-1 校验,我们把他认为是commit id。
*
## 2.6 本地版本回退
我们使用git reset命令 + 版本号 来恢复到指定版本
在Git中,用HEAD表示当前版本,也就是最新的提交259113ff93de6dd45a138ed28bd407ca9689af28
这里我来介绍下reset的三个参数分别是 --soft --hard --mixed(默认不加参数时候)
* --soft HEAD和你重置到的那个commit之间的所有变更集都放在stage(index)区域中
* --hard 清空所有区域,直接恢复到指定版本(可能会丢失数据)
* --mixed HEAD和你重置到的那个commit之间的所有变更集保留在工作区,清空stage
*
## 2.7 撤消操作
### 2.7.1 修改最后一次提交
> $ git commit --amend
此命令将使用当前的暂存区域快照提交。如果刚才提交完没有作任何改动,直接运行此命令的话,相当于有机会重新编辑提交说明
### 2.7.2 取消已经暂存的文件
>git reset HEAD xiaorui.txt 的方式取消暂存
是不是很像 2.6 本地版本回退, --mixed的方式可以让所有暂存的文件全部回到工作区
### 2.7.3 取消对文件的修改
假如我们觉得对工作区xiaorui.txt的文件修改完全没有必要,现在怎么办呢
>$ git checkout -- xiaorui.txt
为毛不支持markdown语法