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

如何使用git diff命令显示所有受影响的文件路径?

Git 仅显示移动/删除文件的所有受影响路径

当仓库中存在文件移动(如project/olddir/file被移至project/newdir/file)或删除(如some/file/deleted被删除)操作时,执行以下命令可查看带状态标识的受影响文件:

$ git --no-pager diff --diff-filter="DR" --find-renames --name-status HEAD
R100 project/olddir/file    project/newdir/file
D    some/file/deleted

但--name-only参数仅会显示移动文件的新路径,无法获取原路径,因此只能依赖--name-status输出,可我们只需要纯路径列表,不需要状态标识。


实现目标格式的方法

Git本身没有直接参数能一步输出每行一个的完整受影响路径列表,但可以通过简单的文本处理工具快速实现:

方式1:输出每行一个路径(便于后续逐行处理)

$ git --no-pager diff --diff-filter="DR" --find-renames --name-status HEAD | awk '{for(i=2;i<=NF;i++) print $i}'
project/olddir/file
project/newdir/file
some/file/deleted

方式2:输出单行空格分隔的路径(如你提供的示例)

$ git --no-pager diff --diff-filter="DR" --find-renames --name-status HEAD | awk '{$1=""; print $0}' | xargs
project/olddir/file project/newdir/file some/file/deleted

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:27:22