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

为什么git diff-tree命令输出的文件路径不是完整绝对路径?

问题原因

这个现象是Git的设计特性和你使用的命令逻辑共同导致的:

  • Git本身仅跟踪相对于仓库根目录的相对路径,不会存储、感知文件在操作系统层面的完整绝对路径。你执行的git diff-tree --name-only命令默认输出的就是相对路径,你在仓库根目录执行时输出的就是相对于根目录的folder/file.txt格式的路径。
  • md5sum的输出规则是:你传入的路径是什么格式,输出时就会保留什么格式。你把Git输出的相对路径直接传给md5sum,最终结果自然只会显示相对路径。

解决方案

如果你需要输出完整绝对路径,可以通过git rev-parse --show-toplevel动态获取当前仓库的根目录绝对路径,拼接后再传给md5sum,修改后的命令如下:

git diff-tree --no-commit-id --name-only -r 08dca334d9b6aa416b377566a8d8606f71b5b8da | xargs -I {} sh -c 'md5sum "$(git rev-parse --show-toplevel)/{}"'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:42:04