1
我有一個佔用大量磁盤空間的git存儲庫,所以我正在調查它。鑑於git中樹的哈希,我怎麼能看到提交了那棵樹?
如果我有一棵樹的散列,我怎麼能看到提交有那棵樹的提交?問題中的樹形哈希可能是提交的子目錄,不一定是提交的「根」樹。
我有一個佔用大量磁盤空間的git存儲庫,所以我正在調查它。鑑於git中樹的哈希,我怎麼能看到提交了那棵樹?
如果我有一棵樹的散列,我怎麼能看到提交有那棵樹的提交?問題中的樹形哈希可能是提交的子目錄,不一定是提交的「根」樹。
如果您擁有散列的樹是頂級樹,那麼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)
請參閱[Git - 從SHA1中找到文件名](http://stackoverflow.com/q/460331/1256452)。雖然這是爲blob,那裏的劇本很容易適應尋找樹木/而不是。 – torek