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

如何用git diff比较同一提交的不同修订补丁?

对比Git Amend前后提交的补丁差异

要实现你要的功能,核心是先定位到amend前后的两个提交,再用git diff做对比,以下是具体方案:

核心命令逻辑

和你原来检测分支差异的思路完全一致,只需要把对比的分支换成amend前后的提交即可:

1. 检测指定路径是否有变更并输出提示

git diff --quiet HEAD@{1} HEAD -- file_path/* || echo "Changed"
  • 逻辑说明:HEAD@{1}是从Git的reflog里取出当前分支的上一个状态(也就是你执行git commit --amend之前的原提交A),HEAD是修订后的新提交B。如果指定路径下有文件变更,git diff --quiet会返回非0值,触发||后面的echo输出"Changed";如果没有变更,命令直接返回0,无输出。

2. 直接列出所有变更的文件

如果想看到具体是哪些文件变了,不用--quiet,换成--name-only参数:

git diff --name-only HEAD@{1} HEAD -- file_path/*

这个命令会直接输出指定路径下所有在amend前后有变更的文件路径。

额外注意事项

  • 如果距离amend操作过了很久,reflog可能被清理(Git默认会保留90天的reflog记录),这时候可以在执行git commit --amend前先手动记录原提交的哈希:
    # amend前先保存原提交哈希
    old_commit=$(git rev-parse HEAD)
    # 执行amend操作
    git commit --amend
    # 之后对比时用保存的哈希
    git diff --quiet $old_commit HEAD -- file_path/* || echo "Changed"
    
  • ORIG_HEAD也可以用来指代amend前的提交,但它只在刚执行完amend后有效,后续执行其他Git命令可能会覆盖ORIG_HEAD的值,所以HEAD@{1}的通用性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 16:55:25