リモートのデフォルトブランチを取得したい

投稿者: Anonymous

ある git url (例: [email protected]: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

参考

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *