当前位置: 首页 > news >正文

【05-log-+-diff:看懂你改了什么、历史是什么】

第五篇:log + diff:看懂你改了什么、历史是什么

会提交只是第一步,会"读"历史才是真的用上了 Git。这篇教你把 log 和 diff 玩出花来。

git log:查看提交历史

gitlog

默认输出太详细,通常用这些参数来精简:

# 每条 commit 一行显示gitlog--oneline# 显示最近 5 条gitlog--oneline-5# 带分支图的方式显示,多分支场景超好用gitlog--oneline--graph--all# 显示某个文件的历史gitlog--oneline-- src/login.php# 搜索 commit messagegitlog--grep="fix"# 搜索某个作者的提交gitlog--author="张三"# 按时间范围过滤gitlog--since="2024-01-01"--until="2024-03-31"# 显示每次 commit 改动了哪些文件gitlog--stat

推荐把常用的组合设置成别名:

gitconfig--globalalias.lg"log --oneline --graph --all --decorate"# 以后直接用gitlg

git diff:查看具体改了什么

diff 是 Git 里最重要的阅读工具,但很多人只会用git diff,其实它有几种不同的用法:

# 查看工作区 vs 暂存区的差异(还没 add 的改动)gitdiff# 查看暂存区 vs 最近一次 commit 的差异(已 add 但没 commit 的改动)gitdiff--staged# 查看工作区 vs 最近一次 commit 的所有差异gitdiffHEAD# 比较两个 commit 之间的差异gitdiffa3f9c12 b7e2d45# 比较两个分支之间的差异gitdiffmain feature/login# 只看改动了哪些文件,不看具体内容gitdiff--name-only main feature/login# 查看某个文件在两个 commit 间的差异gitdiffa3f9c12 b7e2d45 -- src/login.php

读懂 diff 输出

diff --git a/login.php b/login.php index 3f4a2b1..9c8d7e2 100644 --- a/login.php ← 改动前 +++ b/login.php ← 改动后 @@ -10,7 +10,9 @@ ← 从第10行开始,原来7行,现在9行 function validateUser($username, $password) { - if ($password == $storedPassword) { ← 删除的行(红色) + if (password_verify($password, $storedPassword)) { ← 新增的行(绿色) + // 使用 bcrypt 验证,更安全 return true; }
  • -开头的行:被删除的内容
  • +开头的行:新增的内容
  • 没有前缀的行:上下文,没有改动

查看某次 commit 的完整改动

# 查看某个 commit 改了什么gitshow a3f9c12# 查看最近一次 commitgitshow HEAD# 只看改了哪些文件gitshow--statHEAD

实用技巧:找出是谁改了这行代码

# 显示文件每一行最后是谁在哪次 commit 改动的gitblame login.php# 只看某几行gitblame-L10,20login.php

输出格式:

a3f9c12 (张三 2024-01-15 14:23:11 +0800 10) if ($password == $storedPassword) {

锅是谁的,一目了然。(但请温柔地对待同事😅)

小结

  • git log --oneline --graph --all是最常用的历史查看方式,建议设置别名
  • git diff看未暂存改动,git diff --staged看已暂存改动,git diff HEAD看所有改动
  • git show <commit>查看某次提交的完整内容
  • git blame查找每行代码的作者,排查问题时常用

下一篇:《.gitignore 写法全解》


http://www.jsqmd.com/news/574960/

相关文章:

  • 买货架怎么选才不踩坑?注意哪些参数? - 企业推荐官【官方】
  • 3步精通Jable视频下载工具:从安装到高效使用的完整指南
  • cool-admin(midway版)数据库连接池:设计与优化
  • 2026年重庆桥架弯头服务商综合评估与选择指南 - 2026年企业推荐榜
  • 如何轻松掌握Fate/Grand Automata:5个实用技巧让你的FGO游戏体验更高效
  • GLM-4.1V-9B-Base一文详解:多模态对齐损失函数在中文场景表现
  • C语言宏定义:嵌入式开发中的高效利器与避坑指南
  • 网络安全 网站被黑,网站被攻击,举例备忘
  • 化妆品分销商城小程序开发指南
  • Stable Yogi 模型计算机组成原理视角:GPU算力如何加速扩散模型推理
  • STM32CUBEMX驱动W25Q128实战:从SPI配置到数据读写全解析
  • 免费获取城通网盘直连地址:3步解决限速难题的完整指南
  • AT YOUR OWN RISK
  • GCC黑科技:用__attribute__((section))实现函数热更新的秘密(以SDRAM_FUNC1为例)
  • FFM Arena内存管理失效引发Native OOM?深度拆解Java 22 JEP 464中Scoped Memory Model的3种安全模式切换策略
  • 如何实现抖音视频批量下载自动化?这款开源工具让效率提升10倍
  • FigmaCN终极指南:3分钟搞定Figma界面汉化,让设计效率翻倍
  • 2026年市场可靠的气动喷射阀实力厂家推荐,偏心螺杆阀/陶瓷螺杆阀/精密螺杆阀/精密压电喷胶阀,气动喷射阀公司选哪家 - 品牌推荐师
  • Pixel Couplet Gen效果展示:横批支持中英双语+像素化英文书法渲染效果
  • 突破QQ音乐格式壁垒:QMCDecode全方位解密方案与跨场景应用指南
  • 系统集成优选|高精度温湿度传感器 / 变送器 / 记录仪一站式推荐
  • 成都万伯双膜储气柜:专注研发制造,以领先技术赋能行业发展
  • 终极Zotero中文文献管理方案:Jasminum插件完整指南
  • Phi-3-mini-4k-instruct-gguf效果展示:同一输入在q4/GGUF与原生Phi-3模型输出对比
  • 抖音批量下载工具终极指南:开源方案实现高效内容管理
  • uniApp实现跨平台跳转支付宝小程序的完整方案
  • 阿里CosyVoice3功能全解析:3秒极速复刻与自然语言控制模式
  • LFM2.5-1.2B-Thinking优化技巧:如何设置内存限制、开启NPU加速,提升运行效率
  • 3个简单步骤:如何让JetBrains IDE试用期无限重置?
  • 汽车销售|汽车推荐|基于Java+vue的新能源汽车个性化推荐系统(源码+数据库+文档)