Gitの作業ディレクトリからコマンドでデフォルトブランチ名を取得する
はじめに
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
ディスカッション
コメント一覧
まだ、コメントがありません