星球的眼睛 发表于 2024-8-6 11:10:15

Git必知必会根本(07):git diff的利用

本系列汇总,请检察这里:https://www.cnblogs.com/uncleyong/p/10854115.html
git diff的作用

git diff主要用于比较差异,好比工作区和暂存区、暂存区和本地堆栈、分支和分支等;
git diff可以帮助我们找出代码中的变更,从而更好地管理代码。
数据准备

本地堆栈
https://i-blog.csdnimg.cn/blog_migrate/aa32a794e66a3fea0244e91d374fe7a8.png
工作区修改:修改qzcsbj.txt文件
https://i-blog.csdnimg.cn/blog_migrate/5a8e82dea02d2454d6f96fab350d9da8.png
工作区修改:新增test.txt文件
https://i-blog.csdnimg.cn/blog_migrate/ab25587ed23dff51f5a852646b502b5c.png
git diff:工作区和暂存区或者本地堆栈

当工作区有改动,临时区为空,diff的对比是工作区与末了一次commit提交到本地堆栈的共同文件
比较:git diff,结果没test.txt文件
https://i-blog.csdnimg.cn/blog_migrate/744aed3242117bd7914a008c47833f51.png
当工作区有改动,临时区不为空,diff对比的是工作区与暂存区的共同文件
提交到暂存区
https://i-blog.csdnimg.cn/blog_migrate/f9ddc3697a6c4bfd1270dfd481898770.png
工作区修改文件:qzcsbj.txt
https://i-blog.csdnimg.cn/blog_migrate/bbbd6741e679a08cf35a58db676251c5.png
比较:git diff,结果没test.txt文件
https://i-blog.csdnimg.cn/blog_migrate/60ba3d02f1b3e94a433cddf78f7d543e.png
检察指定文件的差异(比较工作区和暂存区):git diff 文件名
git diff qzcsbj.txt,实验结果和上图一样
列出工作区有变更的文件(相对本地分支),不显示变更的具体内容:git diff --stat
https://i-blog.csdnimg.cn/blog_migrate/1589d752e92f87a91739e4252ece54cd.png
停止当前:
工作区内容:
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文件
https://i-blog.csdnimg.cn/blog_migrate/f7938851449bcf8f519d48cd7cbaf875.png
git diff --staged结果,结果有test.txt文件
https://i-blog.csdnimg.cn/blog_migrate/ca414d671714f928f27f75a2cc717957.png
git diff HEAD:工作区以及暂存区和本地堆栈

显示工作目次(已track但未add文件,也就是不包含初次新增未暂存的文件)和暂存区(已add但未commit文件)与末了一次commit之间的全部不相同文件的增编削。HEAD是指向当前分支的指针
https://i-blog.csdnimg.cn/blog_migrate/d1139f69800bd8d095d191a92f4ba4d6.png
git diff <分支名1> <分支名2>:分支或者commitid对比

比较两个分支上末了 commit 的内容的差别
先把master分支的都提交了
https://i-blog.csdnimg.cn/blog_migrate/18d2190d2b9e0d074f23d23688d2a856.png
检察当前分支跟指定分支的差异:git diff 分支名
  也可以检察两个历史提交的差异(后者与前者相比):git diff commitid1 commitid2,commitid通过git reflog检察
git diff branch1 branch2 --stat 显示出全部有差异的文件(不具体,没有对比内容),后者和前者的差异,只比较已经commit的
https://i-blog.csdnimg.cn/blog_migrate/6dd637d348c04c59580a101a9fc38686.png
git diff branch1 branch2 显示出全部有差异的文件的具体差异(更具体),后者和前者的差异,只比较已经commit的
应用场景:在合并改动之前,预览差异:git diff <source_branch> <target_branch>
https://i-blog.csdnimg.cn/blog_migrate/a5df4470a9d70dfd9ffb16afbb91ff6c.png
补充:git diff结果的寄义

示例1:
https://i-blog.csdnimg.cn/blog_migrate/b96267cc42dace9dee613653c36acd0e.png
diff --git a/qzcsbj.txt b/qzcsbj.txt,表示文件qzcsbj.txt的两个版本
--- a/qzcsbj.txt,---表示更改前的文件
+++ b/qzcsbj.txt,+++表示更改后的文件
@@ -1 +1,2 @@,文件差异的地区,-1表示变更前从第1行到第1行,+1,2表示变更后从第1行到第2行
   -hello

, qzcsbj+hello

, qzcsbj+666    -表示删除一行,+表示新增一行
示例2:
本地堆栈
https://i-blog.csdnimg.cn/blog_migrate/f0abe7f2611a0d594bf28b551cce80cc.png
工作区:修改上方第一行和第二行,然后中间插入一行
https://i-blog.csdnimg.cn/blog_migrate/5db84827929eaa7a194f8f44e28f0bc7.png
diff结果
https://i-blog.csdnimg.cn/blog_migrate/2a46902ff800c95f14da472c7f24050b.png
diff --git a/qzcsbj.txt b/qzcsbj.txt,表示文件qzcsbj.txt的两个版本
--- a/qzcsbj.txt,---表示更改前的文件
+++ b/qzcsbj.txt,+++表示更改后的文件
@@ -1,2 +1,3 @@,文件差异的地区,-1,2表示变更前从第1行到第2行,+1,3表示变更后从第1行到第3行
   -hello

, qzcsbj-tester\ No newline at end of file+hello

, 666qzcsbj+job+tester666\ No newline at end of file    -表示删除一行,+表示新增一行,如果对一行内容进行修改,在此处表现出来的就是先删除一行,再新增一行
示例3:
https://i-blog.csdnimg.cn/blog_migrate/4610f3c6c6e500827a6d7211e0aa532d.png
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行开始,到第4行
   第一次修改
第二次修改
test分支:第一次修改
+test分支:第二次修改
    +表示新增了一行,-表示删除了一行,如果对一行内容进行修改,在此处表现出来的就是先删除一行,再新增一行
【bak】

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Git必知必会根本(07):git diff的利用