88171.net

I stand with Ukraine🇺🇦

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 を削除する。 が、リモートの HEADmaster を向いたままだと削除できないので 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/HEADorigin/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

参考