Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
扫描git对象以进行提交而不签出_Git_Git Checkout - Fatal编程技术网

扫描git对象以进行提交而不签出

扫描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签出的情况下读取与git提交相关的所有文件?提交不是指向.git文件夹中的一堆blob吗?有没有一种方法可以在给定提交id的情况下直接读取这些blob?还是运行
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文件