Git版本控制工具详解
认识版本控制(版本控制)
- 是维护 工程蓝图的标准做法,能追踪工程蓝图从诞生一直到定案的过程
- 版本控制也是 一种软件工程技巧,借此能在软件开发的过程中,确保不同的人所编辑的同一程序都能得到同步
版本控制的功能
- 不同版本的存储管理
- 一个项目不断进行版本迭代,来修复之前的一些问题,增加新的功能等
- 如果手动维护的话,效率很低
- 重大版本的备份维护
- 恢复之前的项目版本
- 记录项目的点点滴滴
- 多人开发的代码合并
集中式版本控制
CVS和SVN属于集中式版本控制系统
- 他们的主要特点是 单一的集中管理的服务器,保存所有文件修订版本
- 系统开发人员通过客户端 连接到这台服务器,取出最新的文件或者提交更新
- 但是存在一个核心问题 :中央服务器不能出现故障
- 如果宕机一个小时,在这一个小时之内,谁都无法提交更新,也就无法协同工作
- 如果中心数据库所在的磁盘发生了损坏,且没有做备份,将会丢失所有的数据
- 项目的历史版本都会存在于中央服务器中
分布式版本控制
-
Git是属于分布式版本控制系统
-
客户端并不只提取最新版本的文件快照,而是把 代码仓库完整的镜像下来,包括完整的历史记录
-
这么一来,任何一处协同工作用的 服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复
-
因为每一次克隆操作,实际上都是一次对代码仓库的完整备份
-
与中央服务器不同的是,项目的历史版本,都会被克隆到协作开发的本地电脑,即每台电脑上都有备份
Bash-CMD-GUI区别
- Bash是Unix shell的一种, Linux与Mac OS X都将它作为默认的shell
- Git Bash 就是一个shell,是 windows下的命令行工具,可以执行Linux命令
- Git Bash是基于CMD的,在CMD的基础上增加了一些新的命令与功能
- Git CMD
- 命令提示符(CMD)是Windows操作系统上的命令行解释程序
- 其实就是 windows上面的CMD
- Git GUI
- 针对于不喜欢命令行界面的人
- 提供了一个 图形用户界面来运行Git命令
获取Git仓库 git clone/git init
- 当从零到一创建一个项目的时候,可以使用
git init
创建一个新的仓库- 会生成一个.git文件
- 运行
git add .
用于告诉git 管理当前目录下的所有文件 - 运行
git commit -m "描述"
将本地文件提交到本地的git仓库中- 但没有提交到远程服务器中
- 当已经有一个项目,就可以复制远程仓库的地址,运行
git clone xxxxx
文件状态的划分
- Git在管理项目文件的时候,会对项目划分为以下几种状态
- **未跟踪:**一般在已经被Git管理的项目中,创建新文件的情况下
- **已跟踪:**当我们在项目文件中运行
git add .
的命令后,就会将文件变为已跟踪的状态- **staged:**暂缓区中的文件状态,一般是在运行完
git add .
命令后,就会放入暂缓区中 - **Unmodified:**运行完
git commit -m ""
命令后,文件所处的状态,代表已经将代码提交到了本地的git
- **staged:**暂缓区中的文件状态,一般是在运行完