我可以通过运行来实现我想要的效果:
git log -1 --decorate --oneline <commit hash>
并读取标签名称和分支名称。
有没有办法直接获取这些信息?
基本上我想要的是反向操作:
git rev-parse <tag or branch>^{commit}
答案 0 :(得分:3)
git branch --contains <commit>
git tag --contains <commit>
修改:要查找完全指向哈希abc123
的引用,请执行以下操作:
git show-ref | awk '/^abc123/ {print $2}'
答案 1 :(得分:2)
如果你没有git 2.7+,你仍然可以使用git for-each-ref
来查找指向特定提交的引用,方法是过滤for-each-ref
输出:
git for-each-ref | grep ^1234567
例如。 [编辑:这与using git show-ref
基本相同,只是对其目标的后续标记需要更多输入。 for-each-ref输出适用于脚本,所以如果你想编写一个脚本,使用它可能比使用git show-ref
更好。]
答案 2 :(得分:1)
Git 2.7.0为各种子命令引入了--points-at
标志:
git for-each-ref --points-at <commit> --format '%(refname)'
git branch --points-at <commit>
git tag --points-at <commit>