概述
Git :分布式版本控制系统
,可以快速高效地处理从小型到大型的各种项目。
-
分布式版本控制工具:像 Git 这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库),
每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份
解决了集中式版本控制系统的缺陷:- 服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
- 每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)
- 概念图如下图:图中少画了一个远程库
-
集中式版本控制工具:集中化的版本控制系统诸如
CVS、SVN 等
都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
- 优点:
- 每个人都可以在一定程度上看到项目中的其他人正在做些什么
- 管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易
- 缺点
- 缺点是中央服务器的单点故障。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作
- 图解:如下图,一个公司里面有多个客户端,多个程序员想要开发同一套代码,这个代码统一放到一个中央服务器里面,任何一个想要去修改这一套代码,都需要到中央服务器中去修改同一套代码
工作机制
说明:
-
工作区:代码存放的磁盘的目录位置
-
暂存区:工作区写的代码添加到暂存区,暂存区是没有历史代码的,可以理解为还是可以删除的
-
本地库:暂存区代码提交到本地库,就可以生成对应的历史版本,可以理解为这时候便不能删除了
-
远程库:通过push将代码推送到远程库中
代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库
有以下分类:
- 局域网:GitLab
- 互联网: GitHub(外网)、 Gitee 码云(国内网站)
window安装
安装还是比较简单的,一直下一步就可以了(使用它默认的配置就可以了),就是在选择安装目录的时候注意要安装在没有中文目录里面
安装成功,在文件夹里面右键会出现下面的两个Git选项
Git常用命令
命令名称 | 作用 |
---|---|
git config --global user.name 用户名 | 设置用户签名 |
git config --global user.email 邮箱 | 设置用户签名 |
git init | 初始化本地库 |
git status | 查看本地库状态 |
git add 文件名 | 添加到暂存区 |
git commit -m "日志信息" 文件名 | 提交到本地库 |
git reflog | 查看历史记录 |
git reset --hard 版本号 | 版本穿梭 |
设置用户签名
查看是否设置成功:打开当前电脑的C:\Users目录,选择设置时的用户的目录,在这个目录下会看见一个.gitconfig配置文件 ,如下图
打开这个文件,会看见如下内容:
这样就证明是配置好了的
注意:Git 首次安装必须设置一下用户签名,否则无法提交代码
签名的作用是区分不同操作者身份
注意:这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任何关系。
初始化本地库
本地目录发生了下面多了一个.git目录,如下:
查看本地库状态
如果新建一个文件,如下图所示
enter后,输入下面内容,保存退出
重新查看状态
添加暂存区
语法:
git add 文件名
将工作区的文件添加到暂存区:
查看本地库的状态,现在存到暂存区里面了
删除暂存区的文件
语法:
git rm --cached 文件名
查看状态:现在只是暂存区里面的删除了,工作区里面的还是没有删除的
提交本地库
将暂存区的文件提交到本地库,
语法:
git commit -m "日志信息" 文件名
查看本地库
查看版本信息
查看详细日志
修改文件(模拟版本迭代)
通过vim修改文件后,查看状态
提示信息提示了文件被修改了,红色的字体说明了这次修改的内容还没有上传到暂存区
再次提交本地库,提示新增了两行(我在vim时候新增了两行信息)
重复之前的操作,查看日志等
版本穿梭(更换版本)
基本语法
git reset --hard 版本号
查看版本信息
查看详细信息
查看当前版本的txt文件信息
进行版本跟换
查看现在txt文件内容(变回了第一次的文件内容)
版本切换的原理
按下面的目录进行操作,可以发现下面的信息,说明当前是在master这个分支上
查看当前分支是哪个版本的,按下面的操作,说明是第一个版本
综上所述,Git 切换版本,底层其实是移动的 HEAD 指针:head------>master--------->first