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 を使ってまとめて切り替えるスクリプトを書く(使う)か、という選択肢になるでしょうか。 後者のためのスクリプトは検索すればいくつか見つかります。 信頼できそうなものがあれば自己責任で使うとよいですが、万が一の事故が起こらないようにだけ注意が必要です。