版本控制服务器 --- Git¶
一. Git简介¶
1. 什么是Git¶
Git是一个免费的、分布式的版本控制工具,或是一个见到了速度快的源代码管理工具,每一个Git都是一个完全独立的代码服务器,并拥有完整的历史记录和版本追踪能力,不依赖网络和中心服务器
2. 关于版本控制¶
什么是版本控制?版本控制是一种记录若干文件内容变化以便于查阅特定版本修改情况的系统。我们可以对任何类型的文件进行版本控制。
例如当我们写一个文档时可能会出现的问题
想删除一个段落但又怕将来想恢复找不回来,所以我们此时就要把文件另存为再保存一份备份,这可能会导致文档太多
过段时间想找会被删除的文字,已经不指定删除前保存到哪个文档了
想保留最新的一个然后把其他删掉,但是因为不知道未来会不会用到也不敢删。
某些文档不是你一个人写的,你传给同事后,你和同事同时都更新了文档,这时候文档该怎么合并。
版本控制系统就是为了解决上面所有问题的,它可以统一进行版本控制自动帮我们记录每次文件的改动自动帮我们记录每次文档的改动,进行代码合并。不需要把文件传来传去,如果想查看某次改动,软件里都有记录
有了版本控制你就可以将某个文件回滚到之前的状态,甚至将整个项目组都回退到过去某个时间点的状态。你可以比较文件变化的细节查出最后是修改了哪个地方导致出现异常,又是谁在什么时候报告了某个功能缺陷等。使用版本控制器系统通常还以为之就算你乱来一气把整个项目的文件改的改删的删,你也可以轻松恢复如初而不需要大量工作量。
3. Git文件的三种状态¶
对于任何一个文件再Git内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)
已提交表示该文件已经被安全地保存在本地数据库中了
已修改表示修改了某个人文档,但没有提交保存
已暂存表示八一修改的文件放在下次提交给要保存的清单中
由此我们看到Git管理项目时文件流转的三个工作区域为:Git的工作目录,暂存区域以及本地仓库
- 工作目录
从项目取出某个版本的所有文件和目录,用来开始后续工作的目录叫做工作目录。这些文件实际上都是从Git目录中压缩对象数据库中提取出来的,接下来就可以在工作目录中对这些文件进行编辑。所以工作目录就是写代码的地方.如果有新增、修改、删除文件都是在工作目录发生变化。工作目录的文件可以通过
git add命令将文件提交到暂存区
- 暂存区
所谓暂存区域只不过是个简单文件,一般都放在Git目录中的index文件(.git/index)中。有时候我们会把这个文件叫做索引文件,不过标准的说法还是叫暂存区域。暂存区域就是用来临时存储代码的一片区域,是已经修改了但是还没有提交,将来可以提交到本地库也可以撤回来。通过
git commit命令可以将暂存区的文件提交到本地仓库
- 本地库
每个项目都有一个Git目录(注:如果是
git clone出来的话,就是其中.git的目录;如果git clone --bare,新建的目录本身就是Git目录),它是Git用来保存元数据和对象数据库的地方。该目录非常重要,每次克隆镜像仓库的时候,实践拷贝的就是这个目录里面的数据。本地库就是存储的实实在在的历史版本,可以通过git push命令来将本地库的文件推送到服务器
4. Git工作流程¶
- 在工作目录中修改某些文件
- 对修改后的文件信息快照,然后保存到暂存区域
- 提交更新,将保存在暂存区域的文件快照永久转存到Git目录下
所以,我们可以从文件所处的文件来判断状态:如果是Git目录中保存着特定版本文件,就是与已提交的状态;如果做了修改并已放入暂存区域,就属于已暂存的状态;如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改的状态

已提交(committed): 表示数据文件已经顺利提交到Git版本库中
已修改(modified): 表示数据文件已经被修改,但未被保存到Git版本库中
已暂存(staged): 表示数据文件已经被修改,并会在下次提交时提交到Git版本库中
二. 搭建Git服务器¶
1. 环境¶
| 主机 | IP | 角色 | 软件服务 |
|---|---|---|---|
| 3 | 192.168.100.101 | Server | git |
| 5 | 192.168.100.105 | Client | git |
2. 软件安装¶
安装方法有两种
- 一. yum命令安装,此方法很简单,并且会自动安装依赖,并且会从源里面安装最新的版本,不过不一定是git最新的。
- 二. 源码包安装,这个要麻烦一点。
我们使用dnf命令安装
查看git版本
三. git使用¶
1. 服务端用户创建空仓库¶
1) 创建系统git账号¶
2) 创建版本库¶
版本库又名仓库,可以简单理解为一个目录。该目录里所有的文件都可以被git管理起来。每个文件的修改、删除,git都能追踪,在将来的某个时刻可以还原
基本思路是: 先创建一个空目录,如目录 project.git 作为仓库的存放位置。运行 git init 把这个目录编程git可以管理的仓库。当前目录下多了个.git文件夹(默认隐藏)
a. 切换到git账号
b. 创建一个项目仓库project.git,然后初始化