If the tree that you have the hash of is the top level tree, then git log --pretty=format:"%H %T" --all | awk -v sha=${SHA} '$2 == sha { print $1 }'
will show you what commit(s) had that tree as the commit state. If it's not a top-level tree, though, you'll have to essentially iterate through all the commits on all branches, and recursively list all trees contained in each commit to see if it's among them. Something along these lines (not tested):
while read commit
do
git ls-tree -rt ${commit}^{tree} | grep "tree ${SHA}" | sed -e "s/^.*$/${commit}/"
done < <(git log --pretty=format:"%H" --all)