【发布时间】:2014-01-13 13:26:55
【问题描述】:
我有一个占用大量磁盘空间的 git 存储库,所以我正在研究它。
如果我有树的哈希值,我如何查看哪些提交具有该树?有问题的树哈希可能是提交的子目录,不一定是提交的“根”树。
【问题讨论】:
-
见Git - finding a filename from a SHA1。虽然这是针对 blob 的,但那里的脚本也很容易适应查找树。
标签: git version-control
我有一个占用大量磁盘空间的 git 存储库,所以我正在研究它。
如果我有树的哈希值,我如何查看哪些提交具有该树?有问题的树哈希可能是提交的子目录,不一定是提交的“根”树。
【问题讨论】:
标签: git version-control
如果您拥有哈希值的树是顶级树,那么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)
【讨论】: