Hát végülis így is lehet, de nem vagyok lenyűgözve :)
git for-each-ref --points-at=$hash --format='%(objecttype) %(refname:strip=2)' refs/heads refs/tags | while read type name ; do ...és nem kell grep-pel szűrni, nem kell a prefixet eltávolítani, és az objektum típusa alapján hozzá lehet adni a megfelelő $tags vagy $branches változóhoz.