如何获取Git指定提交中git archive提取的唯一文件列表?
获取Git提交对应归档文件的唯一列表
要直接获取git archive命令会提取的无重复文件列表,不需要先解压归档,用git ls-tree命令就能直接读取目标提交的树结构,得到当前提交中存在的所有文件:
针对HEAD提交
执行以下命令即可得到纯文本的唯一文件列表:
git ls-tree -r --name-only HEAD
参数说明:
-r:递归遍历所有子目录中的文件--name-only:仅输出文件路径,不显示其他树对象信息
针对历史提交(指定SHAID)
把命令中的HEAD替换为目标提交的SHA哈希值即可:
git ls-tree -r --name-only <SHAID>
为什么不用git log --name-only
git log是遍历历史提交记录,会把每个提交中修改过的文件重复列出,而git ls-tree直接读取目标提交对应的当前所有文件快照,和git archive打包的内容完全一致,自然不会有重复。
内容的提问来源于stack exchange,提问作者Tryer
相关产品推荐
相关产品推荐

