Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)


注:转载请标明原文出处链接:https://xiongyiming.blog.csdn.net/article/details/106105282


1 查看当前工作状态

查看当前工作状态命令为: git status

(1) 当文件被修改,没有提交到暂存区时,使用命令:git status ,结果如下图所示,提示一个文件未被追踪,表示当前修改的文件未被提交到暂存区。

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)


(2) 当文件提交到暂存区后,使用命令:git status ,结果如下图所示:

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)


(3) 文件从暂存区提交到Git仓库后,使用命令:git status ,结果如下图所示:

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)




2 查看历史结交记录

查看Git历史结交记录命令为: git log ,结果如下图所示:

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)


通过命令:git log --pretty=oneline 可以查看简约版历史提交记录,结果如下图所示:

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)


也可以通过命令:git log --oneline 可以查看简约版历史提交记录,结果如下图所示:

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)


也可以通过命令: git reflog 查看历史记录,如下图所示,可以看到有 [email protected]{0}[email protected]{1} 信息,其作用时方便后退到某一个版本,数字表示后退到当前版本需要多少步。

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)




3 版本的前进和后退

首先查看版本提交记录,结果如下图所示:

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)


为了方便进行版本的前进和后退操作,对 README.md 文件多进行几次修改、提交操作。

第一次修改后提交到仓库,结果如下图所示:

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)


接下来与上面的步骤相同,第二次修改后提交到仓库,结果如下图所示:

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)


第三次修改后提交到仓库,结果如下图所示:

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)


第四次修改后提交到仓库,结果如下图所示:

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)


通过命令 git reflog 查看历史提交记录,结果如下:

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)



版本的前进和后退需要通过 指针 HEAD 来进行控制


HEAD控制的方式有三种:
(1) 使用版本号进行操作(常用):
命令格式为:git reset --hard 版本号

(2) 使用^符号进行操作,只能后退:
命令: git reset --hard HEAD^ 表示后退一个版本
命令: git reset --hard HEAD^^ 表示后退两个版本

(3) 使用~符号进行操作,只能后退:
命令: git reset --hard HEAD~ 表示后退一个版本;
命令: git reset --hard HEAD~~ 表示后退两个版本;
命令: git reset --hard HEAD~5 表示后退5个版本;
命令: git reset --hard HEAD~n 表示后退n个版本;


注:命令参数有 soft, mixed, hard ** 三种类型:**
(1) 参数 soft 表示本地Git仓库移动HEAD指针
(2) 参数 mixed 表示本地Git仓库移动HEAD指针重置暂存区
(3) 参数 hard 表示表示本地Git仓库移动HEAD指针重置暂存区,重置工作区



下面举例说明版本后退和前进。

使用版本号进行操作,其命令格式为:git reset --hard 版本号

后退到版本号为:1217f11的版本,命令为:git reset --hard 1217f11,结果如下图所示:

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)


当然也可以前进到刚才的版本:命令为:git reset --hard 4786d84,结果如下图所示:

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)




4 删除文件后找回文件

4 .1 Git仓库(本地库)删除文件后找回文件

假设新建一个 d123.txt 文件后提交到Git仓库,然后仓库需要删除该文件,其步骤为:
删除工作区 d123.txt 文件 ——> 提交到暂存区 ——> 提交到仓库


(1) 新建 d123.txt 文件后提交到Git仓库,如下图所示:

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)



(2) 删除Git仓库的 d123.txt 文件

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)



那么问题来了,工作区、暂存区和仓库中的 d123.txt 文件均被删除,该如何找回删除的文件?
此时就需要版本的后退,即可找回文件。

首先查看版本提交记录,然后退回到指定版本即可。如下图所示:

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)



4.2 暂存区删除文件后找回文件

假设新建一个 d456.txt 文件后提交到Git仓库,然后删除文件提交到暂存区后,突然想找回该文件,此时仓库的文件并没有本删除,只需要将指针HEAD后退到提交 d456.txt 文件对应的版本即可,本质就是将调整指针HEAD的方向。


(1) 新建 d456.txt 文件后提交到Git仓库

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)



(2) 删除暂存区的 d123.txt 文件

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)



(3) 找回文件
步骤:通过提交记录,查询提交 d456.txt 文件至仓库的版本号,后退到该版本即可。结果如下图所示:

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)




5 版本中的文件内容比较

对于版本之间同样文件内容比较可以使用命令 git diff 进行操作


比较文件的差异有多种情况:

  1. 第一种:工作区暂存区文件比较,命令格式为: git diff 文件名
  2. 第二种:工作区Git仓库文件比较,命令格式为:git diff HEAD 文件名
  3. 第三种:工作区Git仓库不同版本文件比较,命令格式为:git diff 版本号 文件名

注:不添加文件名进行比较时,将自动比较多个相同文件名文件。


举例说明:
假设当前Git仓库有 d123.txtd456.txt 文件,现在对工作区文件进行修改。

(1) 工作区文件修改,不提交到暂存区
使用命令:git diff d123.txt 进行工作区和暂存区文件比较
使用命令:git diff d456.txt 进行工作区和暂存区文件比较

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)


当不添加文件名时(git diff),自动比较多个文件,如下图所示:

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)



(2) 工作区文件修改,提交到暂存区,并未提交到仓库

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)


使用命令:git diff d123.txtgit diff d456.txt 将工作区文件和暂存区文件对比,如下图所示,工作区和暂存区没有区别,因为工作区文件被提交到暂存区了。

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)


使用命令:git diff HEAD d123.txtgit diff HEAD d456.txt 将工作区文件(工作区文件和暂存区相同,因为工作区文件被提交到暂存区了) 和仓库文件对比,如下图所示,发现有区别了。

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)



(3) 工作区文件修改,提交到Git仓库
使用命令 git diff HEAD d123.txtgit diff HEAD d456.txt 分别将工作区文件和仓库文件比较,结果如下图所示,发现没有区别。

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)


可以通过命令: git diff 版本号 文件名 查询工作区和其他版本之间的文件比较,结果如下图所示:

Git学习笔记(3): Git基本操作(历史记录、版本前进和后退、找回文件、文件内容比较)






参考资料

[1] https://www.bilibili.com/video/BV1bs411N7ny?p=5
[2] https://www.bilibili.com/video/BV1pW411A7a5?p=23