是否可以在不运行git checkout的情况下读取与git commit有关的所有文件?提交是否指向.git文件夹中的一堆斑点?有没有一种方法可以直接在给定提交ID的情况下读取这些Blob?还是运行git checkout
更直接?我只是试图审核文件中的漏洞,例如纯文本密码等。
答案 0 :(得分:1)
有一个git unpack-file $blob_id
,它会将带有斑点名称的blob内容的副本放置在工作树根上,并打印出来。
还有git cat-file --batch
,它采用可选格式和一些其他调整,并通过管道传输所有请求的输出。如果您可以控制审核工具的输入处理,那么这将是迄今为止最有效的:
git ls-files -s | cut -d' ' -f2- \
| git cat-file --batch='%(objectname) %(objectsize) %(rest)' \
| your audit tool
对于提交,它将开始git ls-tree -r $thatcommit | cut -d' ' -f3-
答案 1 :(得分:1)
在Orden中查看对象(并在stdout上获取它),您可以执行以下操作:
git show some-branch-or-revision:file-path
git cat-file -p object-id
其中任何一种都可以。
答案 2 :(得分:1)
...并查看提交使用中包含的文件列表
git ls-tree -r <commit id>
此列表将包含文件数据的Blob ID,因此您可以使用其他答案中提到的cat-file。