Gitの作業ディレクトリからコマンドでデフォルトブランチ名を取得する

2023-03-27Bash,Git,GitHub

はじめに

git clone した作業ディレクトリで作業中しているとき、デフォルトブランチに切り替えたいのですが、デフォルトブランチ名を取得する方法がわかりませんでした。

以前は master ブランチをデフォルトブランチとしているケースがほとんどでしたが、最近では main ブランチや 中には develop ブランチをデフォルトブランチに設定しているリポジトリにも出会うようになりました。

なんとか取得できないかと調べて、取得する方法が見つかったのでメモを残しておきます。

検証環境

$ uname -moi
arm64 unknown Darwin

$ bash -version | head -n 1
GNU bash, バージョン 5.1.16(1)-release (aarch64-apple-darwin21.1.0)

$ git --version
git version 2.37.1

GitHub CLI を使う

GitHub を使っていることが前提となりますが、 Git の作業ディレクトリに対応するリモートリポジトリからデフォルトブランチ名を取得します。

GitHub リポジトリの情報にアクセスするため GitHub CLI を使います。


GitHub CLI については、インストール方法や使い方を過去のエントリで紹介しています。


GitHub CLI でインストールされた gh コマンドを使えば、作業ディレクトリに対応する GitHub 上のリポジトリの設定情報を取得する事ができます。

以下のようなコマンドを実行することで、デフォルトブランチ名が取得できます。

$ gh repo view --json "defaultBranchRef" --jq ".defaultBranchRef.name"
master

変数に代入して利用したい場合には以下のようにかけます。

$ DEFAULT_BRANCH="$(gh repo view --json "defaultBranchRef" --jq ".defaultBranchRef.name"=)"

ひとこと

2022-08-05 現在、 gh repo view --json コマンドで取得できる GitHub のリポジトリ情報は以下のとおりです。

$ gh repo view --json
Specify one or more comma-separated fields for `--json`:
  assignableUsers
  codeOfConduct
  contactLinks
  createdAt
  defaultBranchRef
  deleteBranchOnMerge
  description
  diskUsage
  forkCount
  fundingLinks
  hasIssuesEnabled
  hasProjectsEnabled
  hasWikiEnabled
  homepageUrl
  id
  isArchived
  isBlankIssuesEnabled
  isEmpty
  isFork
  isInOrganization
  isMirror
  isPrivate
  isSecurityPolicyEnabled
  isTemplate
  isUserConfigurationRepository
  issueTemplates
  issues
  labels
  languages
  latestRelease
  licenseInfo
  mentionableUsers
  mergeCommitAllowed
  milestones
  mirrorUrl
  name
  nameWithOwner
  openGraphImageUrl
  owner
  parent
  primaryLanguage
  projects
  pullRequestTemplates
  pullRequests
  pushedAt
  rebaseMergeAllowed
  repositoryTopics
  securityPolicyUrl
  squashMergeAllowed
  sshUrl
  stargazerCount
  templateRepository
  updatedAt
  url
  usesCustomOpenGraphImage
  viewerCanAdminister
  viewerDefaultCommitEmail
  viewerDefaultMergeMethod
  viewerHasStarred
  viewerPermission
  viewerPossibleCommitEmails
  viewerSubscription
  watchers

2023-03-27Bash,Git,GitHub