Git必知必会基础(07):git diff比较工作区、暂存区、本地仓库、分支间的差异

时间:2024-01-22 19:24:13

 

数据准备

本地仓库

Git必知必会基础(07):git diff比较工作区、暂存区、本地仓库、分支间的差异_工作区

 

工作区修改:修改qzcsbj.txt文件

Git必知必会基础(07):git diff比较工作区、暂存区、本地仓库、分支间的差异_工作区_02

 

工作区修改:新增test.txt文件

Git必知必会基础(07):git diff比较工作区、暂存区、本地仓库、分支间的差异_暂存区_03

 

git diff:工作区和暂存区或者本地仓库

当工作区有改动,临时区为空,diff的对比是工作区与最后一次commit提交到本地仓库的共同文件

比较:git diff,结果没test.txt文件

Git必知必会基础(07):git diff比较工作区、暂存区、本地仓库、分支间的差异_暂存区_04

 

当工作区有改动,临时区不为空,diff对比的是工作区与暂存区的共同文件

提交到暂存区

Git必知必会基础(07):git diff比较工作区、暂存区、本地仓库、分支间的差异_暂存区_05

 

工作区修改文件:qzcsbj.txt

Git必知必会基础(07):git diff比较工作区、暂存区、本地仓库、分支间的差异_git_06

 

比较:git diff,结果没test.txt文件

Git必知必会基础(07):git diff比较工作区、暂存区、本地仓库、分支间的差异_git_07

查看指定文件的差异(比较工作区和暂存区):git diff 文件名

git diff qzcsbj.txt,执行结果和上图一样

 

列出工作区有变更的文件(相对本地分支),不显示变更的具体内容:git diff --stat

Git必知必会基础(07):git diff比较工作区、暂存区、本地仓库、分支间的差异_暂存区_08

 

截止当前:

工作区内容:

qzcsbj.txt

hello, qzcsbj
666
123

 

暂存区内容:

qzcsbj.txt

hello, qzcsbj
666

test.txt

hello

本地分支内容:

qzcsbj.txt

hello, qzcsbj

 

git diff --cached 或 git diff --staged:暂存区和本地仓库

显示暂存区(已add但未commit文件)和最后一次commit(HEAD)之间的所有不相同文件的增删改(git diff --cached和git diff --staged相同作用)

此时工作区和暂存区差异如上面文字描述。

 

git diff --cached结果,结果有test.txt文件

Git必知必会基础(07):git diff比较工作区、暂存区、本地仓库、分支间的差异_暂存区_09

 

git diff --staged结果,结果有test.txt文件

Git必知必会基础(07):git diff比较工作区、暂存区、本地仓库、分支间的差异_git_10

 

git diff HEAD:工作区以及暂存区和本地仓库

显示工作目录(已track但未add文件,也就是不包含首次新增未暂存的文件)和暂存区(已add但未commit文件)与最后一次commit之间的所有不相同文件的增删改。HEAD是指向当前分支的指针

Git必知必会基础(07):git diff比较工作区、暂存区、本地仓库、分支间的差异_git_11

 

git diff <分支名1> <分支名2>:分支或者commitid对比

比较两个分支上最后 commit 的内容的差别

先把master分支的都提交了

Git必知必会基础(07):git diff比较工作区、暂存区、本地仓库、分支间的差异_git_12

 

查看当前分支跟指定分支的差异:git diff 分支名

也可以查看两个历史提交的差异(后者与前者相比):git diff commitid1 commitid2,commitid通过git reflog查看

 

git diff branch1 branch2 --stat 显示出所有有差异的文件(不详细,没有对比内容),后者和前者的差异,只比较已经commit的

Git必知必会基础(07):git diff比较工作区、暂存区、本地仓库、分支间的差异_工作区_13

 

git diff branch1 branch2 显示出所有有差异的文件的详细差异(更详细),后者和前者的差异,只比较已经commit的

应用场景:在合并改动之前,预览差异:git diff <source_branch> <target_branch>

Git必知必会基础(07):git diff比较工作区、暂存区、本地仓库、分支间的差异_工作区_14

 

补充:git diff结果的含义

Git必知必会基础(07):git diff比较工作区、暂存区、本地仓库、分支间的差异_git_15

diff --git a/text.txt b/text.txt,表示文件text.txt的两个版本
--- a/text.txt,---表示更改前的文件
+++ b/text.txt,+++表示更改后的文件
@@ -2,3 +2,4 @@ hello test,文件差异的区域,-2,3表示变更前从第2行开始,到第3行,+2,4表示变更后从第2行开始,到第四行
第一次修改
第二次修改
test分支:第一次修改
+test分支:第二次修改,+表示新增了一行,-表示删除了一行,如果对一行内容进行修改,在此处体现出来的就是先删除一行,再新增一行

 

【bak】

 

__EOF__


作者:持之以恒(韧)
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等