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

Git如何获取HEAD与暂存区之间的所有变更文件名(含重命名场景)

可行解决方案

针对已执行git add、尚未提交的重命名变更,要同时获取新旧两个文件路径,使用以下命令即可:

git diff --name-only --cached --no-renames

执行后输出结果为:

foo.txt
bar.txt

参数说明

  • --cached:指定对比暂存区与当前HEAD提交的差异,适配已执行git add的场景
  • --no-renames:关闭Git默认的重命名自动识别逻辑,会将重命名操作拆解为「删除旧文件」+「新增新文件」两个变更,因此会同时返回两个路径

之前尝试的方案问题说明
  • git diff --name-only:默认对比工作区与暂存区的差异,如果你已经将全部变更执行了git add,该命令默认无输出,仅当工作区还有未暂存的变更时才会返回部分路径
  • 带...的diff语法是用于对比两个提交的共同祖先与末端提交的差异,不适用于未提交的暂存区变更场景
  • 提交后才可用的HEAD~1类对比方案,本质是对比两个已存在的提交记录,自然无法适配未提交的场景

如果重命名后还未执行git add,要获取两个变更路径,去掉--cached参数即可:

git diff --name-only --no-renames

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:36:02