GitHub のリポジトリのデフォルトのブランチ名を変更する方法
先日 GitHub の CEO が、 GitHub で作成されたリポジトリのデフォルトブランチに奴隷制を連想させる master
という名前を使うのをやめて代わりに main
を使っていく旨の発言をしました。
追記 2020/07/26: GitHub が master
から main
への移行に関するガイドを公開しました:
このあたりは人によって感じ方が違うところだと思いますが、個人的にはコンピュータ・サイエンスの文脈で master / slave という用語を初めて目にしたときからずっと違和感があったので、この流れには肯定的です。
ただ、ブランチ名の master
がダメということになると、 master ということばは slave とペアになっていなくても単体でも NG ワードという扱いにもなってきそうです。
私は「修士課程修了」を意味する「 Master of Engineering 」について「字面と響きがかっこよくていいなぁ」とよく思うのですが、これがたとえば junior doctor 〜や subdoctor 〜といった呼び方になると(これらはあくまでも例です)「マスター!オブ!エンジニアリング!」の「なんだか強そう感」が失われて少し惜しい気もします。
本題に戻って、 GitHub のリポジトリのデフォルトのブランチ名を変更する方法です。
GitHub の方針に従ってデフォルトのブランチ名を master
から main
に変える場合を考えます。
リポジトリをすでにチェックアウトしている場合の手順は次のとおりです。
- ローカルで
master
ブランチをmain
に変える - GitHub に
main
ブランチを push する - GitHub で
main
をデフォルトブランチに設定する - GitHub の
master
ブランチを削除する - 関連サービスで影響を受ける部分を変更する
# 1. ローカルの `master` ブランチの名前を `main` に変更する
git branch -m master main
# 2. GitHub に `main` ブランチを push する
# あわせてアップストリームとしてセットしておく
git push -u origin main
# 3. GitHub で `main` をデフォルトブランチに設定する
# これはブラウザでリポジトリの Settings → Branches で行う
# 4. GitHub の `master` ブランチを削除する
git push origin :master
もし CI のサービス等で master
ブランチを名指しで使っているなら、そのあたりも変更が必要です。
影響範囲があまりに広い場合は無理にやらない方がよいと思います。
リポジトリをチェックアウトしていない場合は、ひとつずつチェックアウトして切り替えていくか、 GitHub の API を使ってまとめて切り替えるスクリプトを書く(使う)か、という選択肢になるでしょうか。 後者のためのスクリプトは検索すればいくつか見つかります。 信頼できそうなものがあれば自己責任で使うとよいですが、万が一の事故が起こらないようにだけ注意が必要です。