Gitのmasterブランチを改名する
時流に乗って(乗れてないけど)、手元のGitリポジトリの master
ブランチを改名することにした。
ただざっと調べたところでは(GitHubとかでなく)独自のリモートリポジトリを使っているケースの情報が見当たらなかったので、せっかくなのでまとめておく。
ちなみに、このテキストを改名後の main
ブランチにpushすることでpublishされるので、何かミスってたらこのテキストは世に出ないことになる。
リモートのブランチ名を変える
ローカルの master
ブランチを main
に改名する。
$ git checkout master
$ git branch -m master main
改名した main
をリモートにpushし、同時にupstreamを設定する。
$ git push --set-upstream origin main
次にリモートの master
を削除する。
が、リモートの HEAD
が master
を向いたままだと削除できないので main
に向け直す。
GitHubで言うところの「デフォルトブランチの変更」に相当する。
ここだけはリモートリポジトリを直接触る必要がある。
remote$ git symbolic-ref HEAD refs/heads/main
リモートの master
を削除する。
$ git push origin --delete master
remotes/origin/HEAD
が消えてしまうので再設定する。
$ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
他のcloneで追いかける
ローカルの master
ブランチを main
に改名する。
$ git checkout master
$ git branch -m master main
fetchしてupstreamを再設定する。
$ git fetch
$ git branch --unset-upstream
$ git branch --set-upstream-to=origin/main
remotes/origin/HEAD
が origin/master
を向いたままなので、再設定する。
$ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
残っているリモートトラッキングブランチ origin/master
を削除する。
$ git branch --remotes --delete origin/master
おまけ
次にリポジトリを新規作成する場合に備えて、デフォルトブランチの名前を変えておく。
$ git config --global init.defaultBranch main