Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.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_Version Control - Fatal编程技术网

给定git中一棵树的哈希值,我如何才能看到该树包含哪些内容?

给定git中一棵树的哈希值,我如何才能看到该树包含哪些内容?,git,version-control,Git,Version Control,我有一个git存储库,它占用了很多磁盘空间,所以我正在研究它 如果我有一棵树的散列,我怎么能看到那棵树有什么?所讨论的树散列可能是提交的一个子目录,而不一定是提交的“根”树。如果拥有散列的树是顶级树,那么git log--pretty=format:“%H%T”-all | awk-v sha=${sha}'$2==sha{print$1}'将向您显示该树作为提交状态的提交内容。但是,如果它不是顶级树,则必须迭代所有分支上的所有提交,并递归列出每个提交中包含的所有树,以查看它是否在其中。沿着这些

我有一个git存储库,它占用了很多磁盘空间,所以我正在研究它


如果我有一棵树的散列,我怎么能看到那棵树有什么?所讨论的树散列可能是提交的一个子目录,而不一定是提交的“根”树。

如果拥有散列的树是顶级树,那么
git log--pretty=format:“%H%T”-all | awk-v sha=${sha}'$2==sha{print$1}'
将向您显示该树作为提交状态的提交内容。但是,如果它不是顶级树,则必须迭代所有分支上的所有提交,并递归列出每个提交中包含的所有树,以查看它是否在其中。沿着这些路线的东西(未测试):

读取时提交
做
git ls tree-rt${commit}^{tree}|grep“tree${SHA}”| sed-e“s/^.*$/${commit}/”
没看见。尽管这是针对blob的,但是那里的脚本也很容易适应于查找树。
while read commit
do
  git ls-tree -rt ${commit}^{tree} | grep "tree ${SHA}" | sed -e "s/^.*$/${commit}/"
done < <(git log --pretty=format:"%H" --all)