鉴于git中树的哈希,我怎样才能看到那棵树有什么提交?

时间:2014-01-13 13:26:55

标签: git version-control

我有一个占用大量磁盘空间的git存储库,所以我正在调查它。

如果我有一棵树的哈希,我怎么能看到那棵树有什么提交?有问题的树形哈希可能是提交的子目录,不一定是提交的“根”树。

1 个答案:

答案 0 :(得分:0)

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

while read commit
do
  git ls-tree -rt ${commit}^{tree} | grep "tree ${SHA}" | sed -e "s/^.*$/${commit}/"
done < <(git log --pretty=format:"%H" --all)