Gitリポジトリ作成時のデフォルトブランチ名がmainとなるように設定する

2023-03-27Bash,Git,GitHub

はじめに

こちらもいずれやらないとなぁと思ったままお座なりになっていたローカル環境の設定です。

シェルで Github リポジトリの master ブランチの名前を main ブランチに変更する」というエントリでもお話しましたが、
Github リポジトリを新規に作成した場合のデフォルトブランチ名が master から main に変更となっています。(もう随分前の話ですね。)

そんな時代の流れとは裏腹に、自分の PC で git init し Git リポジトリを新規作成した際のデフォルトブランチ名が未だに master となっています。

少しでもおっさん化の流れに抵抗する必要があるということで、 git init したときに作られるデフォルトブランチ名を main にするための設定をしようと思いました。

検証環境

$ uname -moi
x86_64 MacBookPro16,1 Darwin

$ bash -version | head -n 1
GNU bash, version 5.1.8(1)-release (x86_64-apple-darwin20.3.0)

$ git --version
git version 2.31.1

今回の作業の前提

当然のことながら git コマンドが使えるようになっている必要があります。

加えて、 Git のバージョンが 2.28 以降でなければいけません。

僕の環境は以下の通り、 2.28 以降でした。

$ git --version
git version 2.31.1

Git の新しい設定として init.defaultBranch が追加されています

Git 2.28 より前のバージョンでは、 git init コマンドでリポジトリを新規作成した場合、常に master というブランチがデフォルトで作成されていました。

Git 2.28 からは、新しい設定項目として init.defaultBranch が追加されています。 ( そこそもこれまでは master という文言が Git ソースコードにハードコードされていました。 )
この設定項目に設定した値を使って、デフォルトブランチを作成するように修正されています。

僕の作業用 PC では、 init.defaultBranch が設定されていないため、今まで通り master という名前でデフォルトブランチが作成されていました。

ちなみにこちらの設定を行っても、すでに存在する Git リポジトリには影響を与えません。
もし既存の Git リポジトリに対しても master から main というリネームを行いたい、という場合は以下のエントリを参照ください。(リネーム用のスクリプトを公開しています。)

init.defaultBranch を設定するための手順

設定は簡単です。
以下のコマンドを作業用 PC で実行するだけです。

$ git config --global init.defaultBranch main

それでは設定を進めていきます。

その前に、一度 git init して作成されるデフォルトブランチを見ておきます。

# 適当な作業用ディレクトリを作成し、移動しておきます。
$ mkdir -p work
$ cd work

$ git init
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint:   git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint:   git branch -m <name>
Initialized empty Git repository in /private/tmp/work/.git/

# 現在のブランチを確認
$ git branch --show-current
master

はい、 master ブランチが作成されています。

( ちなみにメッセージをしっかり読めばわかるのですが、 init.defaultBranch を設定して master という文言から変えましょうって提案してくれています。ちゃんと読んでおけば。 )

それでは、今後 git init したときに作成されるデフォルトブランチを main となるように設定します。

$ git config --global init.defaultBranch main

再度確認してみます。

# 適当な作業用ディレクトリを作成し、移動しておきます。
$ mkdir -p work2
$ cd work2

$ git init
Initialized empty Git repository in /private/tmp/work/work2/.git/

# 現在のブランチを確認
$ git branch --show-current
main

正しく変更されました。

init.defaultBranch を設定しよう!というメセージも表示されなくなりましたね。

ひとこと

新しい PC に移行したり、サーバ構築したときにこの作業忘れるっていうのが発生しそうな気がします。。。

ブランチに master という文言が入っているリポジトリがあったら通知する、みたいなものもあったほうが良さそうですね。

2023-03-27Bash,Git,GitHub