笔记视频参考:https://study.163.com/course/introduction.htm?courseId=1003109018#/courseDetail?tab=1
笔记文字参考:https://fishc.com.cn/forum-334-1.html
下载及其配置:
1.下载git,地址: https://git-scm.com/
2.安装,一路next,直到安装成功。
3.配置,右键打开git bush here,输入以下命令:
git config --global user.name "xxxxx"
git config --global user.email "xxxx@qq.com"
git config --list //查看
如图:
理论基础
1.git记录的是什么?
git是对每个版本的独立存储,看似消耗了很多的空间,但是在分支管理上带来很多的好处。
2.git是通过维护三棵"树"来实现版本控制的,这三颗“树”分别是工作区域、暂存区域、git仓库。
工作区域(目录):就是平时存放工作项目的位置。
暂存区域:临时存放改动的地方。实际上是一个文件,保存的就是即将存放到仓库的列表信息。
git仓库:最终安全的存放所有版本数据的位置。里面有所有提交的版本数据,其中,HEAD指针指向最新提交的版本数据。
3.git的工作流程
- 在工作目录中添加、修改数据。
- 将需要进行版本管理的文件存放如暂存区域。
- 将暂存区域的文件提交到Git仓库。
所有Git管理法人文件有三种状态:
- 已修改(modified)
- 已暂存(staged)
- 已提交(committed)
实战
提交
1.在电脑的任意位置创建一个文件夹,作为存放项目的位置。(如:新建一个名为MyProject的文件夹放在E盘)
2.打开新建的文件夹,鼠标右键打开git bush。
3.输入 git init ,初始化一个空的git 仓库。执行命令之后可以看到MyProject下面增加了一个.git文件夹,这个文件夹就是git 用来管理版本迭代的,不可修改。
4.新建自己需要的文件(如创建一个readme.md文件)
5.输入 git add readme.md,将文件存进暂存区域。(回车之后没有任何消息表示正常)
6.输入git commit -m "add a readme file" ,将暂存区域的文件提交到git 仓库,引号内部的为本次提交内容的说明。
查看状态
1.git status ,查看当前git 的工作状态。
(当前状态处于主分支,且工作目录没有需要提交的文件(表示上一次提交之后没有任何改动))
2. 在MyProject文件夹下面添加LICENSE文件,然后git status,如图
3.git add LICENSE 将LICENSE文件添加到暂存区域
4.git status 查看状态
原来的暂存区域被覆盖,如果突然反悔,不想要git命令跟踪LICENSE文件,可使用提示的命令恢复到工作区域
5.使用git reset HEAD,再使用git status 来查状态
6.提交,如图指令。
7.修改了LICENSE文件,然后git status.(文件的修改导致工作区域和暂存区域的文件不匹配,所以git给出两条建议)
git add <file> ... 表示将工作区域的新版本覆盖到暂存区域
git checkout -- <file> 表示将暂存区域的旧版本覆盖回工作区域的新版本。(原来修改的内容失效)
8.如果上一步选择git add 之后然后再次修改工作区域的LICENSE文件,那么如图(绿色表示处于暂存区域,红色表示工作区域的文件发生改变)
9.最终提交
查看历史版本
1.git log (按时间从近到远,作者、时间、说明、草黄色的内容为提交ID(唯一))
回到过去
工作区域、缓存区域、git仓库提交和回退的指令图
针对上面的readme和LICENSE文件的示例,(v1表示每个文件的版本,HEAD指针指向最新一次提交的版本)
1. git reset HEAD~ 找到HEAD的上一个版本
2.git reset HEAD~ 10 找到HEAD的前10个快照
3.reset 命令的选项
- git rest --mixed HEAD~
--移动HEAD的指向,将其指向上一个快照(影响git仓库)
--将HEAD移动后指向的快照回滚到暂存区域(影响了暂存区域)
- git rest --soft HEAD~
--移动HEAD的指向,将其指向上一个快照,不会影响暂存区的内容。(撤销一次commit)
- git rest --hard HEAD~
--移动HEAD的指向,将其指向上一个快照(影响git仓库)
--将HEAD移动后指向的快照回滚到暂存区域(影响了暂存区域)
--将暂存区域的文件还原到工作目录(影响工作目录)
reset命令回滚快照三部曲 归纳:
- 移动HEAD的指向(--soft)
- 将快照回滚到暂存区域([--mixed,默认])
- 将暂存区域还原到工作目录(--hard)
回滚指定快照(不仅可以往后滚,还可以往前滚)
git reset 版本快照的ID号码 (ID号码可以只写前几位,区分其他ID即可)
回滚个别快照
git reset 版本快照 文件名/路径