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

如何获取等效于git diff A...HEAD且包含本地暂存未暂存修改的结果

解决方案

你需要的对比逻辑本质是:将git diff A...HEAD使用的「A与HEAD的共同祖先」作为对比基准,把对比终点从HEAD改为当前包含所有未提交改动的工作区即可,具体实现方案如下:

通用兼容方案(所有Git版本适用)

执行命令:

git diff $(git merge-base A HEAD)
  • git merge-base A HEAD会自动获取提交A和当前HEAD的最近共同祖先,也就是git diff A...HEAD的原始对比基准
  • 直接和该基准提交做diff时,Git默认会包含本地所有暂存、未暂存的修改,完全覆盖你需要的两个对比场景

简化方案(Git 2.20及以上版本适用)

高版本Git提供了专门的参数省略手动查找共同祖先的步骤,执行命令效果和上面完全一致:

git diff --merge-base A

可选扩展

如果后续你需要只包含暂存改动、排除未暂存改动,只需要在命令后添加--cached参数即可:

# 通用版
git diff --cached $(git merge-base A HEAD)
# 高版本简化版
git diff --merge-base --cached A

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:36:04