gitのデフォルトブランチ名が変わらない
はじめに
gitのデフォルトブランチ名をmainに変更しようとした時に気がついたことを整理。
要約
- gitの設定ファイルの検索範囲は3種類ある(system, global, local)[1]
- 同じkeyに異なるvalueが登録されていた場合の優先順序は
local > global > system
デフォルトブランチ名が変わらない
前提
- Windows10, 64bit
- git 2.32.0
デフォルトブランチ名を変えよう
Zennに記事を投稿しようと思い立ち、諸々のアカウント作成やソフトウェアのインストールを実施。gitは以前使っていたがversionが古かったので最新化。
「そういえばブランチ名がmasterからmainに変わったんだっけ?」と思い出し、デフォルトブランチ名の変え方を調べて以下のコマンドを実行。
git config --global init.defaultBranch main
設定が反映されたかを確認するために以下のコマンドを実行。目grep[2]すると、デフォルトブランチ名がmasterのままになっていることを発見。あれ、なんでだ…?
git config -l
~~~
init.defaultbranch=master
範囲をグローバルに絞って確認すると、きちんと反映されている。う~ん…
git config --global -l
~~~
init.defaultbranch=main
とりあえずリポジトリ作ったら、mainでブランチがつくられた。
git init
git branch
~~~
* main
困ったら公式ドキュメント
困ったらまずは公式ドキュメントだ!ということでいそいそ調査。
When reading, the values are read from the system, global and repository local configuration files by default, and options --system, --global, --local, --worktree and --file <filename> can be used to tell the command to read from only that location (see FILES).
お、systemレベルのコンフィグあるの?と思って確認したら大当たり。
git config --system -l
~~~
init.defaultbranch=master
同じ設定があった場合の優先順位は「local > global > system」なので動作上は問題ないんだけど、統一されていないと気持ち悪いので、systemの設定を更新して一件落着。[3]
git config --system init.defaultbranch main
おまけ
-
目grepした時、実は
init.defaultbranch=main
も出力されていたけど、最初にmasterが目に入ってしまい、全然気がついていなかった。 -
同じkeyに異なるvalueが登録されている場合は
--get-all
オプションで全ての値を取得できる。git config --get-all init.defaultbranch ~~~ master main
-
keyの大文字・小文字が識別されていないのは
core.ignorecase=ture
のせいかな?と思って試してみたけど、そもそもkeyは大文字・小文字が識別されないっぽいThe variable names are case-insensitive, allow only alphanumeric characters and -, and must start with an alphabetic character.
Discussion