为了避免在使用(python)脚本签出某个 git SHA 时不必要地分离 HEAD,如果该 SHA 恰好是分支的当前 HEAD,我想签出一个分支。
理想情况下,我想为 git 提供一个 SHA,如果 SHA 在分支的当前提示上,它会返回一个分支名称,否则会出错。
git describe --all --exact-match <SHA>
几乎是我需要的,只是它主要针对标签,所以如果一个分支和一个标签指向我的 SHA(例如,这经常发生在我们的发布分支中),只给出标签。这没有用,因为签出标签会导致 HEAD 分离(即使分支指向同一个 SHA)。
请注意,我不想这样做git branch --contains
- 我不需要知道哪些分支包含我的提交。
如果没有类似 的命令git describe
,仅针对分支,我知道我可以通过git show-ref
. 不过,这不是最优雅的解决方案。
我也可以这样做git name-rev --name-only <hash>
,但我必须手动检查~
字符的输出,如果某处有 git 命令来做同样的事情,这会感觉不雅。