前言:Git当中比较当前版本和之前版本区别分两种,一种是宏观上比较和上次提交版本的区别,体现在改动了哪几个文件;另外一种是微观上的比较,比较不同版本间改动的文件细节。
1. git status — 查找改动的文件
若想要查看上次提交后,文件是否再出现了改动,使用git status
,可以看见修改了哪些文件。
$ git status
以下是对git status
可能出现的三种情况:
1.1 无文件改动
1.2 有文件改动但未添加到暂存区
1.3 有文件改动但添加到暂存区未提交
2. git diff — 查找改动的文件细节
要寻找每次不同文件中改动细节首先必须要知道是比较哪两个工作区中的文件,才能找到文件比较其中的区别。Git三大工作分区当中,工作区的上一级是暂存区,暂存区的上一级是版本区,每次的文件比较都是从当前工作区级别和上一级区域文件做比较。
2.1 比较命令
- git diff — 定位在工作区和暂存区做比较
- git diff --cached / git diff --staged — 定位在暂存区和版本区做比较
- git diff HEAD / git diff commit_ID — 定位在工作区和版本区作比较
- git diff commit_ID1 commit_ID2 — 定位在版本库比较不同版本区别
2.2 比较结果结构详解
-
第一行标记比较的文件,
diff --git a/Test1.md b/Test1.md
表示比较了a版本的Test1.md
和b版本的Test1.md
文件。 -
第二行表示比较的不同区域的文件哈希值对象和模式,
index 718179f..dc137a4 100644
,其中718179f
和dc137a4
分别是Test1.md
文件的对象哈希值,100644
中的100
代表普通文件,644
代表文件权限(同Linux文件系统权限)。 -
--- a/Test1.md
+++ b/Test1.md
接下来文件名前面的---
表示修改前的文件,+++
表示修改后的文件。 -
@@ -1,2 +1 @@
用两个@@
符号一首一尾标记,表示改动的文件行数,修改前和修改后的文件用,
隔开。-
表示改动前的文件从第1行开始改动,从当前行数往后改动了2行;+
表示改动后的文件从第1行开始改动,并且就改动了第1行。 -
-changeg
-
上面的-
表示改动前的文件内容,即第1行开始往后连续2行内容。 -
+for testing changes
\ No newline at end of file
上面+
号表示修改后文件增加的内容。