git diff对比差异时指定或排除特定的文件和目录

文章目录

前言

你一般什么时候会用GPT?

居然会有这种话题,答案就是作为程序员的我天天在用,虽然GPT有个胡说八道的毛病,但试试总没错的,就比如今天题目中这个问题,我也是先查了GPT没好使,但给我提供了查询思路,最后在Stack Overflow上找到解决办法,记录一下

git diff指定或者排除文件

我就直接列答案了,没什么可说的,工具参数记住就好

指定文件和目录

bash 复制代码
git diff dev..feature --stat  -- ':*.pb.go' ':*.pb.h' ':*.pb.cc'

以上语句表示对比dev和feature分支差异的文件,但是只选择后缀为以上三种的文件,如果是特定的目录,将冒号后的内容替换成目录即可,-- ':src/thirdparty'

排除文件和目录

bash 复制代码
git diff dev..feature --stat  -- ':!*.pb.go' ':!*.pb.h' ':!*.pb.cc'

在上面的基础上加个取反的感叹号就行,如果是排除目录就在 !直接写目录就可以了,这种排除的写法还有另一种形式,用(exclude)代替感叹号,其中还可以写其他属性,感兴趣可以自己扩展查询一下:

bash 复制代码
git diff dev..feature --stat -- ':(exclude)*.pb.go' ':(exclude)*.pb.h' ':(exclude)*.pb.cc'

番外篇

今天在某乎上看到一个提问《C++有多难?》,看着大佬们口若悬河、引经据典的在诉说、在吐槽、在愤慨,却引起了我的回忆,我为什么选择C++?

只因为在人群中多看了一眼吧,有先入为主的因素,也有水到渠成的必然。

我最先接触的一门编程语言是C语言,对于刚刚接触编程的我来说,它是那么令人着迷,虽然开发环境是寒酸可怜的Turbo C,但是丝毫没有影响我的学习热情,刚开始打印出一个杨辉三角都开心的不得了,教科书上的每个例子我都敲了很多遍,虽然那古老的教材现在被大佬们批判的不行,但确实领我在代码的世界里入了门。

后来随着学习的推进,又逐步接触了Java、C#等高级语言,也接触了汇编、单片机等偏底层的领域,为什么没有选Java、C#而一直坚守C语言呢?有份程序员的孤傲,当时觉得C语言很酷,我是底层我牛X,你们这些语言不是带个虚拟机,就是拖个运行时一点都Cool,那为什么不选汇编语言呢?咳咳,确实吼不住。

就这样我带着C语言,C语言伴着我开始一步步经历大学生活,当然期间也从一些"旁门左道"里习得只言片语的C++,只是我不知道它还有这个名字,带着舍我其谁的年轻气盛,我和C语言一起去参加各种编程比赛,结果有好有坏,但实力确实很菜,虽然也拿到过一些区域或者国家级的名次,但如今已成过往云烟。

转眼间就来到了大四实习,一个专业100多人,少部分人选择了苹果应用,绝大多数投身于Java开发,而我独自一人选择了嵌入式C,为什么选择嵌入式,因为只有它带"C",也是在这短暂的几个月里我再一次听说了C++,但仅仅局限于了解C和C++有什么不同,C++好像有个class和struct挺像的。

开始真正的找工作了,受大学和室友一起打dota的影响,我毅然决然的加入了游戏开发大军,在那个各类游戏百花齐放的年代,C/C++在游戏行业有着根深蒂固的基础,因为我的C语言还不错,所以还是顺利的入了坑。

但随着踏入这个坑,我和C++开始正面交锋了,纠缠至今已经有10多年,中间工作6年之后有一次转Golang开发的机会被我拒绝了,我给那个面试官的回答是因为情怀吧,我不能离开C++。

如今我用C++20的标准在工作,与刚开始接触的C++98真的跨了一个世纪,各种语法糖之外是另一些语法糖,每个版本中标准委员会提到的特性,恨不得要3年后的要下个版本才能开发,庞大语言体系使得一些初入社会的毛头小子才配标注"精通"二字,而像我这种使用十多年的菜鸟只敢承认用过C++,略懂皮毛而已。

C++很难吗?真的很难!可不可以简单一点,其实它也可以很简单,不要拿着各种内存问题和我C++挑战,这不是我的强项,但我同样可以写出没有内存泄漏的程序;也不要拿着各种工具、运行时库和我比开发效率,这也不是我的强项,我难道就没有库吗,开源的世界里百花齐放。

不要一提到C++就是面向对象、STL、模板元编程,它是一门编程语言,一门用于完成任务的可编写逻辑的语言,用它写一个冒泡排序也很简单,不要过分夸大他的难度,每次你都把它最难的地方亮出来,对它来说是不公平的。

如今,我不会再说C++就是牛X其他语言都是垃圾这种脑抽的话,C++只是一种语言,一种我暂时还离不开的语言,但它不再是我的唯一,写个小工具偶尔也会使用Python或者Golang,不是我不再爱C++,而是有了更合适的选择而已。

C++,一门集强大与庞大于一身的语言,学会它容易,但学透它确实很难,我们在一起共同成长。

总结

  • GPT无处不在,每天必用超过了google
  • git diff 指定文件类型 git diff dev..feature -- ':*.pb.go' ':*.pb.h' ':*.pb.cc'
  • git diff 排除文件类型 git diff dev..feature -- ':!*.pb.go' ':!*.pb.h' ':!*.pb.cc'

==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==


每天提问自己一个问题,试验一段时间,看看是否有效吧,本质还是眼高手低造成了目前的焦虑

相关推荐
欧特克_Glodon6 小时前
OpenCV计算机视觉开发入门与实践<二十四>:几何变换之平移、缩放、旋转
c++·人工智能·opencv·计算机视觉
云和数据.ChenGuang7 小时前
git revert回退问题
java·服务器·人工智能·git·fastapi·强化学习
鱼很腾apoc7 小时前
【Linux】第13期 详解应用层协议HTTP+Cookie/Session+HTTPS
linux·服务器·c++·学习·http·https
charlie1145141917 小时前
deque、list 与 forward_list:vector 之外的三个选择
开发语言·数据结构·c++·list·开源项目
Escalating_xu8 小时前
【C++ string 上篇】从字符串基础到容量管理、迭代器与经典算法题
java·c++·算法
伞伞悦读8 小时前
【第12期】Windows 开发环境备份与恢复:软件、环境变量、Git、conda 和 Docker 卷完整方案
git·docker·conda
吨吨ai8 小时前
Codex 实战:用 Git 分支 + pytest 构建可回滚的 AI 开发流程(2026年8月27日)
人工智能·git·pytest
啦啦啦啦啦zzzz8 小时前
ET和LT详解
linux·运维·服务器·网络·c++·网络编程
skr爱码士8 小时前
10_Qt Designer 与 UI 文件(.ui 原理、uic 编译、动态加载)
c++·qt·ui·客户端
秋风点枝8 小时前
第一篇:认识 Argo CD —— 从传统发布到云原生 GitOps
git·云原生·argocd