質問: ある git url (例: git@hogehoge.com:foo/bar.git) があったとき、このリモートのデフォルトブランチを取得したいです。 何も引数指定せずに clone してみたときにチェックアウトされているブランチが、デフォルトブランチであるので、原理的には取得可能ではあると思っています。かといって、わざわざ clone するのはあまりにも手間です。 質問: --- * リモートのデフォルトブランチを取得することは可能ですか?
回答: GitHubなどではデフォルトブランチと呼称していますが、厳密には `HEAD` が指すブランチです。そして `HEAD` の正体は symref と呼ばれる、ref を参照する ref です。 ### リモートのHEADが指すブランチを文字列で取得する リモートに存在する ref とそれに対応するコミットを一覧する `git ls-remote` というコマンドがあるのですが、`--symref` オプションを付けると参照先のref (この場合ブランチ) も表示します。 ``` $ git ls-remote --symref https://github.com/ruby/ruby.git HEAD ref: refs/heads/trunk HEAD 532bbd4ebf7a90c101a4cb42a680bbb0e29e64d8 HEAD ``` ### 参考 * What determines default branch after "git clone"? - Stack Overflow * Get the branch name pointed at by HEAD in a remote repository without cloning the remote - Stack Overflow