为了避免使用(python)脚本检出特定的git SHA时不必要地分离HEAD,如果该SHA恰好是分支的当前HEAD,则我希望检出一个分支。
理想情况下,当我提供一个SHA时,我希望git返回一个分支名称,如果该SHA在分支的当前尖端,否则报错。
请注意,我不想执行
如果没有像
我还可以使用
理想情况下,当我提供一个SHA时,我希望git返回一个分支名称,如果该SHA在分支的当前尖端,否则报错。
git describe --all --exact-match <SHA>
已经非常接近我需要的功能了,但它主要是针对标签的,所以如果一个分支和一个标签都指向我的SHA(例如,在我们的发布分支中经常发生这种情况),只有标签会被给出。这不太有用,因为即使分支也指向相同的SHA,检出标签也会导致分离的HEAD。请注意,我不想执行
git branch --contains
- 我不需要知道哪些分支包含我的提交。如果没有像
git describe
这样专门针对分支的命令,我知道可以通过git show-ref
交叉检查我的SHA与分支SHA。但这不是最优雅的解决方案。我还可以使用
git name-rev --name-only <hash>
,但我必须手动检查输出中的~
字符,如果有一个git命令可以做同样的事情,这会感觉不太优雅。
git for-each-ref --points-at <branch_name>
命令。请参见下面的答案。 - VonC