什么是 Git
Git 是一个开源的分布式版本控制系统,是目前世界上最先进、最流行的版本控制系统。可以快速高效地处理从很小到非常大的项目版本管理。
特点: 项目越大越复杂,协同开发者越多,越能体现出 Git 的高性能和高可用性
Git 的特性
Git 之所以快速和高效,主要依赖于它的如下两个特性:
- 直接记录快照,而非差异比较
- 近乎所有操作都是本地执行
与SVN的差异比较
传统的版本控制系统(例如 SVN)是基于差异的版本控制,它们存储的是一组基本文件和每个文件随时间逐步累积的差异。
好处: 节省磁盘空间
缺点: 耗时、效率低
在每次切换版本的时候,都需要在基本文件的基础上,应用每个差异,从而生成目标版本对应的文件。
Git 的记录快照
Git 快照是在原有文件版本的基础上重新生成一份新的文件,类似于备份。为了效率,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。
缺点: 占用磁盘空间较大
优点: 版本切换时非常快,因为每个版本都是完整的文件快照,切换版本时直接恢复目标版本的快照即可。
特点: 空间换时间
近乎所有操作都是本地执行
在 Git 中的绝大多数操作都只需要访问本地文件和资源,一般不需要来自网络上其它计算机的信息。
特性:
- 断网后依旧可以在本地对项目进行版本管理
- 联网后,把本地修改的记录同步到云端服务器即可
Git 中的三个区域
使用 Git 管理的项目,拥有三个区域,分别是工作区
、暂存区
、Git 仓库
Git 中的三种状态
- 已修改: 工作区的文件被修改了,但还没有放到暂存区,就是已修改状态。
- 已暂存: 如果文件已修改并放入暂存区,就属于已暂存状态。
- 已提交: 如果 Git 仓库中保存着特定版本的文件,就属于已提交状态
基本的 Git 工作流程
基本的 Git 工作流程如下:
- 在工作区中修改文件
- 将你想要下次提交的更改进行暂存
- 提交更新,找到暂存区的文件,将快照永久性存储到 Git 仓库
Git的配置与安装
在Git官网中下载适合你电脑的安装包、
配置用户信息
配置是使用命令行来配置:
1. 配置用户名
git config --global user.name "在这里填写用户名"
2. 配置邮箱
git config --global user.email "邮箱"
tips
: 如果使用了 --global 选项,那么该命令只需要运行一次,即可永久生效
Git 的全局配置文件在哪里查看
通过 git config --global user.name
和 git config --global user.email
配置的用户名和邮箱地址,会被写入到C:/Users/用户名文件夹/.gitconfig
文件中。这个文件是 Git 的全局配置文件,配置一次即可永久生效。
检查配置信息
3. 查看所有全局配置项
git config --list --global
4. 查看指定全局配置项
git config user.name
git config user.email
获取帮助信息(两种方式命令)
- 在浏览器中查看
git help config
- 在终端中查看 :
git config -h
1. 在浏览器中查看 :git help config
2. 在终端中查看: git config -h
Git的基本操作
获取 Git 仓库的两种方式
- 将尚未进行版本控制的本地目录转换为 Git 仓库
- 从其它服务器克隆一个已存在的 Git 仓库
以上两种方式都能够在自己的电脑上得到一个可用的 Git 仓库
在现有目录中初始化仓库
如果自己有一个尚未进行版本控制的项目目录,想要用 Git 来控制它,需要执行如下两个步骤:
- 在项目目录中,通过鼠标右键打开“Git Bash”
- 执行 git init 命令将当前的目录转化为 Git 仓库
git init 命令会创建一个名为 .git 的隐藏目录,这个 .git 目录就是当前项目的 Git 仓库,里面包含了初始的必要文件,这些文件是 Git 仓库的必要组成部分。
tips:
如果没有显示.git文件,并不代表出错了,我们只是电脑默认把隐藏的文件不显示,可以再我的电脑中,点上方查看,然后把查看隐藏文件给选上就可以了;
git工作区中文件的 4 种状态
Git 操作的终极结果:
让工作区中的文件都处于“未修改
”的状态,然后供我们操作。
检查文件的状态
git status(显示的非常全面)
git status -s(仅仅显示文件的状态,非常精简)
查询状态的结果分析:
1. ?? 代表未被git管理;
2. A代表现在是从原来未被管理的状态,变成了被管理的状态,并且已经进入了工作区。此时如果进行修改,那就会变成红色的M,并且没有进入暂存区,想进去再用git add
3. 红色M代表我们被跟踪的文件被修改了,但是还没有放到暂存区中。
4. 绿色的D代表的是这个文件已经彻底被移除git了
添加跟踪文件
git add 文件名 (eg: git add index.html)
把暂存区的文件提交到git仓库
git commit -m "在这里写描述信息,也可以不写" -m的作用就是添加描述信息
如果要把修改的文件,放到暂存区
,此时我们要重新运行 git add +这个文件
就可以了
运行以后的查询状态结果为: 红色的M就变成了绿色的M(表示修改的文件已经放到了 ,暂存区)
撤销对指定文件的修改(危险性比较高,谨慎操作)因为撤销以后就没办法恢复了
git checkout -- 文件名
向暂存区中一次性添加多个文件
git add .
把暂存区中的文件移除
git reset HEAD +要移除的文件名称
把暂存区中所有的文件都移除掉
git reset HEAD .
直接将工作区的文件直接提交到git仓库(-a 就是跳过暂存区的意思,-m就是添加描述信息的意思)
git commit -a -m "描述信息"
从git仓库中移除相应的文件(有两种)
- 把git仓库中和工作区中的这个文件同时移除
git rm -f 目标文件
- 值从git仓库中移除这个文件,但是保留工作区这个文件
git rm -- cached 目标文件
忽略文件,让不需要纳入git管理的文件,也不显示在未被git管理的列表中
在根目录上创建一个名字叫.gitignore的文件,然后在这个文件中写需要忽略的文件语法
文件 .gitignore 的格式规范:
- 以
# 开头
的是注释 - 以
/ 结尾
的是目录 - 以
/ 开头
防止递归 - 以
! 开头
表示取反 - 可以使用
glob 模式
进行文件和文件夹的匹配(glob 指简化了的正则表达式)
glob 模式
6. 星号 *
匹配零个或多个任意字符
7. [abc]
匹配任何一个列在方括号中的字符 (此案例匹配一个 a 或匹配一个 b 或匹配一个 c)
8. 问号 ?
只匹配一个任意字符
9. 在方括号中使用短划线
分隔两个字符, 表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配
所有 0 到 9 的数字)
10. 两个星号 **
表示匹配任意中间目录
(比如 a/**/z 可以匹配 a/z 、 a/b/z 或 a/b/c/z 等)
eg: .gitignore文件的例子
查看项目的提交历史
如果希望回顾项目的提交历史,可以使用 git log 这个简单且有效的命令。
回退到指定的版本
使用git reset --hard 命令 ,根据指定的 ID 回到指定的版本中
总结: GIT中的常用基础操作
- 初始化 Git 仓库的命令
git init
- 查看文件状态的命令
git status
或git status -s
- 一次性将文件加入暂存区的命令
git add .
- 将暂存区的文件提交到 Git 仓库的命令
git commit -m "提交消息"
不断复盘,不断优秀,踏实做人,认真做事;关注三连,持续更新~~~