扫描git对象以进行提交而不签出
有没有一种方法可以在不运行git签出的情况下读取与git提交相关的所有文件?提交不是指向.git文件夹中的一堆blob吗?有没有一种方法可以在给定提交id的情况下直接读取这些blob?还是运行扫描git对象以进行提交而不签出,git,git-checkout,Git,Git Checkout,有没有一种方法可以在不运行git签出的情况下读取与git提交相关的所有文件?提交不是指向.git文件夹中的一堆blob吗?有没有一种方法可以在给定提交id的情况下直接读取这些blob?还是运行git checkout更简单?我只是想检查这些文件是否存在明文密码等漏洞。有一个git unpack file$blob_id,它会在工作树根目录下删除blob内容的副本,并打印一个垃圾名称 还有git cat文件--batch,它采用可选的格式和更多的调整,并通过管道传输所有请求的输出。如果您能够控制审
git checkout
更简单?我只是想检查这些文件是否存在明文密码等漏洞。有一个git unpack file$blob_id
,它会在工作树根目录下删除blob内容的副本,并打印一个垃圾名称
还有git cat文件--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-以查看对象(并在标准输出上获取),您可以执行以下操作:
git show some-branch-or-revision:file-path
git cat-file -p object-id
这两种方法都可行。。。。以及查看提交使用中包含的文件列表
git ls-tree -r <commit id>
git-ls-tree-r
此列表将包含文件数据的blob ID,因此您可以使用其他答案中提到的cat文件