You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git Diff提交顺序疑问:如何查看指定提交引入的变更?

如何用git diff查看特定提交引入的变更?

先来看你的提交历史(最新的提交在最上方):

hash09  Update something5
hashNew Update something4
hashOld Update something3
hash03  Update something2
hash02  Update something
hash01  Add something

你想要查看hashNew这个提交里引入的变更,本质上就是要对比hashNew和它的父提交hashOld之间的差异——也就是hashNew相对于hashOld做了哪些修改。下面逐个分析你给出的命令:

  • git diff hashNew..hashOld:这个命令等价于git diff hashNew hashOld,它展示的是从hashNew回退到hashOld的变更,也就是hashOld相对于hashNew的差异,和你要的方向完全相反,所以不对。
  • git diff hashOld..hashNew:这才是正确的选择!git diff A..B的逻辑是展示从A到B的变更,也就是B相对于A的差异。这里就是对比hashOld(父提交)和hashNew(目标提交),正好能看到hashNew提交里新增的所有修改。
  • git diff hashNew~:hashNew~是hashNew的父提交(也就是hashOld),但单独用git diff <commit>时,Git会默认把这个提交和当前工作区做对比,而不是和hashNew对比,所以这个命令无法直接得到hashNew提交本身的变更。
  • git diff hashNew^:hashNew^和hashNew~在普通非合并提交里是完全等价的,都是指向父提交hashOld,同样的问题——这个命令是拿当前工作区和hashOld对比,不是你要的结果。

另外补充个小技巧:如果想快速查看某个提交本身的变更,还可以用git show hashNew,这个命令会直接展示该提交的详细diff,效果和git diff hashNew^ hashNew是一样的,用起来更方便~

内容的提问来源于stack exchange,提问作者Sato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:11:56