Previous Post | Top | Next Post |
TOC
21世紀の世情の反映で、 PC
の視点から、デフォールトのブランチ名は、master
に代わり、新規のプロジェクトでは
main
が使われていきます。
人を不愉快にすることを続けたく無いので、折に触れ過去のプロジェクトでも同様にするべく、
master
からmain
へのデフォールトブランチ名を移行するための手順を、備忘録を兼ねたメモ
としてここに作成します。
GITHUBサーバーの変更
GithubのWeb interfaceで、Settings -> Branches -> Default branch から
「master
」を「main
」と変更します。
ローカルのrepoの変更
ローカルブランチ名の変更
次に、GITHUBのWEBインターフェースの吹き出しにある指示手順で、ローカルの repoのブランチ名を状態を確認しながら変更します。
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
$ git branch -m master main
$ git branch -a
* main
remotes/origin/HEAD -> origin/master
remotes/origin/master
$ git status -sb
## main...origin/master
トラッキングの移行
さらに、GITHUBのWEBインターフェースの吹き出しにある指示手順で リモートのトラッキングがうまくするための追加の関連設定を 状態を確認しながらします。
$ git fetch origin
From github.com:<user_name>/<project_name>
* [new branch] main -> origin/main
$ git branch -a
* main
remotes/origin/HEAD -> origin/master
remotes/origin/main
remotes/origin/master
$ git status -sb
## main...origin/master
$ git branch -u origin/main main
Branch 'main' set up to track remote branch 'main' from 'origin'.
$ git branch -a
* main
remotes/origin/HEAD -> origin/master
remotes/origin/main
remotes/origin/master
$ git status -sb
## main...origin/main
HEADの整合性の確保
上記でGITHUBのWEBインターフェースの吹き出しにある指示手順は終了し新ブランチ名で使えます。
ただ、remotes/origin/master
が残っているのが目障りです。綺麗に新ブランチ名に移行するには、
これを消してHEADの整合性を確保します。
$ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
$ git branch -a
* main
remotes/origin/HEAD -> origin/main
remotes/origin/main
remotes/origin/master
$ git branch -r -D origin/master
deleted remote-tracking branch origin/master (was ???????).
$ git branch -a
* main
remotes/origin/HEAD -> origin/main
remotes/origin/main
上記の最初の操作のHEADの関連付け先変更処理は、git remote
を使っても
できます。この方が見通し良いかもしれません。
$ git remote set-head origin main
... (以下同様)
ここで行ったHEADの関連付け先変更処理は、以下のコマンド実行時のWARNINGの解消 をしてくれます。
$ git branch -a
warning: ignoring broken ref refs/remotes/origin/HEAD
...
綺麗に新ブランチ名に移行するのは結構大変です。
GITHUB 以外の場合
GITHUBのみならずGITLAB系も含めてWEBインターフェースがあるREPOのホストサーバーは 上記同様のWEBインターフェース経由でリモートのブランチ名を変更するアプローチが WEBインターフェースとの整合性がとれ無駄なデーターアップロードもなく良いと思います。
ただ、直接アクセスできないREPOのホストサーバー上のブランチ名を変更する場合は、
ローカルのブランチ名を変更してレポをPUSHした後で、REPOのホストサーバー上の古い
ブランチ名master
を消すという荒技を使うのも手です。
$ git checkout -b main
$ git branch -D master
$ echo "renamed master to main"
$ git push origin :master
以下でも同じです。
$ git branch -m master main
$ echo "renamed master to main"
$ git push --delete origin master
ローカルのデフォールト設定
ホスト上で新規に作るREPOのブランチでフォルト名の設定は以下です。
$ git config --global init.defaultBranch main
参考Cookbookサイト
Previous Post | Top | Next Post |