人生100年!生涯エンジニア人生!

楽しいエンジニア人生!

Git 2.28.0 でdefault branchをmaster以外に変更する方法 init.defaultBranch を試す (2020年10月1日GitHubはdefault branchの強制変更)

git 2.28.0がリリースされた

BLM運動に対応したgit 2.28.0がリリースされました。
github.blog

gitのdefault branchを自由に変更できるという対応です。(他にも色々なバグフィックスもあります)
gitのdefault branchはハードコーディングされているということだったので設定を追加することで対応したようです。

default branchの設定が無いときはmasterのままで、default branchの設定が有るときは、その設定値になります。
どうなるのか?せっかくだから試してみました。

なお、GitHub ActionsのCheckoutプラグインは変更済みです。
kawahara-ci.hatenablog.com

git 2.28.0を試してみましょう!

適当なディレクトリーでgit initを実行します。
その後.git/HEADファイルを確認するとmasterのままです。
f:id:hideaki_kawahara:20200729175039p:plain

git branch --show-current で確認します。
masterのままですね。

f:id:hideaki_kawahara:20200731083404p:plain

gitのバージョンを2.28.0にアップデートします。
f:id:hideaki_kawahara:20200729173328p:plain

.gitディレクトリーを消しておいてから、git 2.28.0リリースブログに記載の通りgit config --global init.defaultBranch mainを打って設定を変更します。
そしてgit initを実行して、その後.git/HEADファイルを確認するとmainに変わりました!

f:id:hideaki_kawahara:20200729175216p:plain

git branch --show-currentで確認します。
mainに変更されています!!

f:id:hideaki_kawahara:20200731082802p:plain

~/.gitconfigファイルも設定が変わっていることが確認できます。
f:id:hideaki_kawahara:20200729183315p:plain

git config --global init.defaultBranch mainを使用しないときはgit init後にgit branch -M mainとしてください。

変わったことを確認したら、GitHubでrepositoryを作成してみます。
2020年7月29日の時点ではgit push -u origin masterのままです。
f:id:hideaki_kawahara:20200827171425p:plain

GitHubにpushしてみましょう。
試しにgit push -u origin masterと実行してもエラーになりますが、git push -u origin mainと実行すると成功します。
f:id:hideaki_kawahara:20200729180657p:plain

※なお、既存リポジトリーに対してgit initしてReinitializedしてもgit branch --show-currentの内容も.git/HEADファイルの内容は変更されません。
変更するときはgit branch -M mainを使います。

今すぐ、brunchを変える必要性は低いですが、将来的にはbrunchはmainに変わっていくだろうと思いますので、git 2.28.0 にバージョンアップしたらgit config --global init.defaultBranch mainと設定を変更しておくと良いと思います。

2020年10月1日以降に訪れた方へ

git push したらnew branch としてmasterが作られた!
f:id:hideaki_kawahara:20200827133925p:plain

そんな事がありましたか? 2020年10月1日に、GitHubではmaster branchがmain branchに強制変更されております。
慌てずにmain branchにmergeして、git fetch して git checkout main して git pull しましょう。

2020年8月27日更新 GitHubはdefault branch強制変更を表明

上で「将来的にはbrunchはmainに変わっていくだろうと思います」と言いましたが、default branchがmaster branchのときはmain branchに強制的に変更されることが発表されました。

github.blog

今後のためにもgit 2.28 をインストールしてdefault branchの変更設定をしておくことをオススメします。

登録済みRepositoryをmainに変更する

右側のメニューからSettingを選びます。
f:id:hideaki_kawahara:20200827122025p:plain

SettingからRepositoryを選びます。

f:id:hideaki_kawahara:20200827115343p:plain

Change default branch name now を押下すると自分の所有しているRepositoryを一気に変更します。
参加しているグループも一気に変更するので、変更するときは事前にグループでお話をしてからにしましょう。
以下のRepository個別対応が、今のところオススメです。

Repository個別対応

変更するRepositoryを選びます。
branch を押下する。
f:id:hideaki_kawahara:20200827120153p:plain

main と入力して、Create branch: main を押下する。
f:id:hideaki_kawahara:20200827120222p:plain

main に切り替わりました。
f:id:hideaki_kawahara:20200827120423p:plain

しかしdefaultには切り替わっていません。

f:id:hideaki_kawahara:20200827120532p:plain

branchesを押下すると、一番上にdefault branchがあるので、Change default branchを押下します。
f:id:hideaki_kawahara:20200827120758p:plain

mainを選択してください。
f:id:hideaki_kawahara:20200827120939p:plain

Updateを押下します。
f:id:hideaki_kawahara:20200827121022p:plain

確認画面が出ます。
f:id:hideaki_kawahara:20200827121107p:plain

完了です。
f:id:hideaki_kawahara:20200827121149p:plain

なお、コマンドでは既存Repositoryのdefault branch変更はできません。
コマンドラインでできるのはbranchの追加か、branch名の変更だけです。
branch名の変更をコマンドで行うときは以下のとおりです。

git branch -M main
git remote set-head origin main
git push -u origin main  

GitHubでデフォルトbranchをmainに変更したら。
以下のコマンドでmasterが消せます。

git push origin :master

おまけ

2020年8月27日にGitHubのサイトを確認するとbranchの新規作成後のメッセージでgit branch -M masterが追加されていました。
2020年10月1日からはgit branch -M mainに変わるでしょう。

2020年7月29日のスクリーンショットです。
f:id:hideaki_kawahara:20200729172708p:plain

2020年8月27日のスクリーンショットです。 f:id:hideaki_kawahara:20200827171425p:plain