【问题标题】:Given the hash of a tree in git, how can I see what commits have that tree?给定 git 中树的哈希值,我如何查看哪些提交具有该树?
【发布时间】:2014-01-13 13:26:55
【问题描述】:

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

如果我有树的哈希值,我如何查看哪些提交具有该树?有问题的树哈希可能是提交的子目录,不一定是提交的“根”树。

【问题讨论】:

标签: git version-control


【解决方案1】:

如果您拥有哈希值的树是顶级树,那么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)

【讨论】:

    猜你喜欢
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    • 2019-05-31
    • 2018-06-21
    • 2015-07-10
    • 2011-01-02
    • 1970-01-01
    相关资源
    最近更新 更多