给定git中一棵树的哈希值,我如何才能看到该树包含哪些内容?
我有一个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 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)