什么是Git?
Git是一个版本控制器 ,++用于记录代码文件,能记录每次的修改以及版本迭代的一个管理系统++。它可以控制电脑上所有格式的文档。而对于我们开发人员来说,Git管理的多为项目的源代码文档。
看完上面的介绍,可能还是没有办法理解Git到底有什么作用。不过你可能听过这样一个笑话:有一个公司的员工,他按老板的需求做好了方案并提交,老板并不满意,让员工前前后后修改了好几个版本;当他疲惫地修改完之后交给老板,这时候老板又觉得第一个提交的方案是最好的。
这样的老板看到就觉得火大。不过我们也可以看出,如果员工是在原来的方案上进行的修改,那么他就没有第一版的保存。那么就需要对每个版本都进行保存记录才能应对这样的情况。那么如果有很多个版本呢?如果在几百个版本里面需要找出含有某个功能的版本,又该怎么去找呢?于是Git就用来处理不同版本的文档,能保存各种详细的信息,在我们需要的时候就可以拿出来使用。
创建Git仓库(初始化仓库)
下面以centos系统为例,创建一个git仓库便于使用:
bash
mkdir gitcode
cd gitcode
下面我们使用如下命令在当前文件目录下创建一个git本地仓库:
bash
git init
git init 命令作用为初始化仓库

此时可以看到创建了一个后缀为.git的隐藏目录:

我们tree一下就能看到隐藏目录下的文件:

【注】我们手动创建的gitcode目录并不是git仓库,而隐藏目录.git才是git仓库。
配置本地仓库
在初始化仓库之后,首先要初始化两个配置项 ------ name 和 email 地址。配置如下:
bash
git config user.name "你的名字"
git config user.email "你的邮箱地址"
通过上面的方式就可以对名字和邮箱进行一个基本的配置。要查看是否配置成功,使用下面的命令:
bash
git config -l
如果需要修改配置项,则使用下面的命令:
bash
git config --unset user.name
表示重置name配置,该操作会删除 掉原有的name配置项。
在实际操作中,还经常会使用到 global 选项:
bashgit config --global user.name "你的名字" git config --global user.email "你的邮箱地址"使用global之后会对当前机器上的所有git仓库执行该命令。删除同理。
工作区、暂存区、版本区
简单来讲,工作区就是正在写代码的地方;暂存区就是代码草稿箱;而版本库就是最终定稿的存档。
添加文件
bash
git add 【文件名】
将对应文件添加到暂存区(即草稿箱中)。此外,还可以使用下面的命令:
bash
git add .
该命令会将当前目录下所有新增,修改和删除的文件,一次性全部添加到暂存区。
保存版本
在修改完成之后,使用commit命令可以对暂存区内的文件进行提交:
bash
git commit -m "details"
这样就能将文件成功保存到版本库中。
可以使用git log来打印出所有文件的提交记录(包括提交时间,提交人等)
bashgit log
修改文件
git追踪管理的是修改内容,而不是文件。我们对暂存区中的文件进行修改,会被git记录,我们可以使用下面的命令来查看git的状态,可以看到文件有没有被修改,新增内容;
bash
git status
该命令只能查看到哪个文件被修改,而无法看到被修改的内容。
因此,git还提供了一个命令,用于显示工作区和暂存区的差异:
bash
git diff 【文件名】
版本回退
版本回退需要用到 git reset命令:
bash
git reset [Head]
# git reset命令有不同的选项
git reset --soft [Head]
git reset --mixed [Head]
git reset --hard [Head]
git reset的本质是回退版本库的内容。可以用于回到当前版本库的版本。
|---------|-----|-----|-----|
| 选项/命令 | 工作区 | 暂存区 | 版本区 |
| --soft | 不回退 | 不回退 | 回退 |
| --mixed | 不回退 | 回退 | 回退 |
| --hard | 回退 | 回退 | 回退 |
如果不带选项,则默认为mixed选项。且在回退之后无法恢复。因此在实际使用中会慎用--hard选项。
删除文件
删除文件有以下方法:
bash
rm [文件名]
不过该命令只能删除工作区中的文件。其实删除文件也是对文件的修改,因此想要保存删除操作,我们也需要通过add和commit来上传到暂存区和版本区中,完成这些步骤才是实现了一个git仓库中文件的删除。
此外,git也提供了一个删除文件的命令:
bash
git rm [文件名]
该命令会实现在工作区和暂存区中文件的删除,我们只需要手动再commit提交即可实现删除。