(python) スクリプトで特定の git SHA をチェックアウトするときに不必要に切り離された HEAD を避けるために、その SHA がたまたまブランチの現在の HEAD である場合は、代わりにブランチをチェックアウトしたいと思います。
理想的には、git に SHA をフィードしたいのですが、SHA がブランチの現在のヒントにある場合はブランチ名を返し、そうでない場合はエラーを返します。
git describe --all --exact-match <SHA>
私が必要としているのはほとんどのものですが、それは主にタグを対象としているため、ブランチとタグが私の SHA を指している場合 (たとえば、リリース ブランチでよく発生します)、タグのみが与えられます。タグをチェックアウトすると HEAD が分離されるため (ブランチが同じ SHA を指していても)、これは役に立ちません。
私はやりたくないことに注意してくださいgit branch --contains
-どのブランチにコミットが含まれているかを知る必要はありません。
のようなコマンドがない場合はgit describe
、ブランチについてのみ、 を介してブランチ SHA に対して SHA をクロスチェックできることがわかっていgit show-ref
ます。ただし、これは最もエレガントなソリューションではありません。
を行うこともできますがgit name-rev --name-only <hash>
、文字の出力を手動で確認する必要~
があり、同じことを行う git コマンドがどこかにあるとエレガントではないと感じます。