既存のGitHubリポジトリのデフォルトブランチをmasterからmainへ変更した手順

はじめに

ローカルでGitリポジトリを作成して、GitHubの既存リポジトリとの紐付けを行った。

そして、git pull origin mainを行うと、fatal: couldn’t find remote ref main エラーが発生した。

エラーの原因は、リモートで masterブランチだったこと。

このエラーを解決して、ローカルとリモート共に mainブランチにするまでの過程を記述した。

1. GitHubリポジトリとの紐付けを行った

ローカルにbingoを作成して、リモート(https://github.com/ki-hi-ro/bingo)と紐づけた。

hiroki@shibatahiroshitakanoiMac bingo % git init
Initialized empty Git repository in /Users/hiroki/programing_output/bingo/.git/

hiroki@shibatahiroshitakanoiMac bingo % git remote add origin https://github.com/ki-hi-ro/bingo.git

2. git pull origin main で、fatal: couldn’t find remote ref main が発生

リモートの内容をローカルに反映させようとして、git pull origin main を試みたが、エラーが発生した。

hiroki@shibatahiroshitakanoiMac bingo % git pull origin main
fatal: couldn't find remote ref main

エラーの原因は、リモートにmainブランチが存在すると思っていたが、実際に存在していたのはmasterブランチだったということ。

3. git statusで、現在のローカルはmainブランチにいることを確認した

hiroki@shibatahiroshitakanoiMac bingo % git status
On branch main

No commits yet

nothing to commit (create/copy files and use "git add" to track)

4. ローカルで、空のファイルを作成してプッシュした

hiroki@shibatahiroshitakanoiMac bingo % touch README.md
git add .
git commit -m "first commit"
git push -u origin main
[main (root-commit) c3f33d7] first commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README.md
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 210 bytes | 210.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
remote: 
remote: Create a pull request for 'main' on GitHub by visiting:
remote:      https://github.com/ki-hi-ro/bingo/pull/new/main
remote: 
To https://github.com/ki-hi-ro/bingo.git
 * [new branch]      main -> main
branch 'main' set up to track 'origin/main'.

git push -u origin main について補足すると、

-u オプションによって今後は、git push だけで、指定したリモートにpushできるようになった。

ローカルブランチとリモートブランチの状態を確認した。

hiroki@shibatahiroshitakanoiMac bingo % git branch -a
git log --oneline --graph --all --decorate
* main
  remotes/origin/main
* c3f33d7 (HEAD -> main, origin/main) first commit

ローカルのmainブランチとGitHub上のorigin/mainブランチが同じコミット(first commit)を参照していることが確認できた。

5. GitHubのデフォルトブランチがmasterであることをローカルから確認した

hiroki@shibatahiroshitakanoiMac bingo % git fetch origin
git branch -a
remote: Enumerating objects: 58, done.
remote: Counting objects: 100% (58/58), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 58 (delta 26), reused 46 (delta 14), pack-reused 0 (from 0)
Unpacking objects: 100% (58/58), 11.92 KiB | 244.00 KiB/s, done.
From https://github.com/ki-hi-ro/bingo
 * [new branch]      master     -> origin/master
* main
  remotes/origin/HEAD -> origin/master
  remotes/origin/main
  remotes/origin/master

git fetch originすると、* [new branch] master -> origin/master と返ってきたことから、リモートにorigin/masterが存在することがローカルから確認できた。

また、origin/HEAD -> origin/master と表示されており、GitHubのデフォルトブランチがmasterであることも分かった。

6. 既存のmasterブランチをローカルに取り込んだ

hiroki@shibatahiroshitakanoiMac bingo % git switch -c master origin/master
branch 'master' set up to track 'origin/master'.
Switched to a new branch 'master'

git switch -c master origin/master を実行して、リモートの origin/master を元にローカルの master ブランチを作成し、そのブランチへ切り替えた。

7. リモートのmainブランチは不要だったので、削除した

「4. ローカルで、空のファイルを作成してプッシュした」で git push -u origin main を行った。

しかし、もともとリモートのmasterブランチにお目当てのファイル一式が入っていたので、リモートのmainブランチは不要になった。

そのため、 git push origin –delete main で、リモートのmainブランチを削除した。

hiroki@shibatahiroshitakanoiMac bingo % git push origin --delete main
git switch master
To https://github.com/ki-hi-ro/bingo.git
 - [deleted]         main
Already on 'master'
Your branch is up to date with 'origin/master'.

8. ローカルのmasterブランチをmainに変更した

git branch -m master main で、masterブランチをmainに変更しようとした。

しかし、mainブランチはすでにローカルに存在していた。

hiroki@shibatahiroshitakanoiMac bingo % git branch -m master main
fatal: a branch named 'main' already exists
hiroki@shibatahiroshitakanoiMac bingo % git branch
  main
* master

そのため、git branch -D main で、ローカルのmainブランチを削除した。

そして、git branch -m master main で、masterブランチをmainに変更した。

hiroki@shibatahiroshitakanoiMac bingo % git branch -D main

git branch -m master main
Deleted branch main (was c3f33d7).

9. ローカルのmainブランチをリモートにプッシュした

git push -u origin main で、リモートにプッシュした。

iroki@shibatahiroshitakanoiMac bingo % git push -u origin main
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
remote: 
remote: Create a pull request for 'main' on GitHub by visiting:
remote:      https://github.com/ki-hi-ro/bingo/pull/new/main
remote: 
To https://github.com/ki-hi-ro/bingo.git
 * [new branch]      main -> main
branch 'main' set up to track 'origin/main'.

-u をつけると、次回以降、git pushだけでリモートにプッシュすることができるようになる。

10. リモートのmasterブランチを削除した

git push origin –delete master で、リモートのmasterブランチを削除しようとしたが、失敗した。

hiroki@shibatahiroshitakanoiMac bingo % git push origin --delete master
To https://github.com/ki-hi-ro/bingo.git
 ! [remote rejected] master (refusing to delete the current branch: refs/heads/master)
error: failed to push some refs to 'https://github.com/ki-hi-ro/bingo.git'

原因は、リモートで masterブランチがデフォルトブランチだったため。

Settings > General > Default Branchで、デフォルトブランチをmaster → mainに変更した。

その後に同じコマンドで削除することができた。

hiroki@shibatahiroshitakanoiMac bingo % git push origin --delete master
To https://github.com/ki-hi-ro/bingo.git
 - [deleted]         master

11. リモートとローカル共にmainブランチになった

git branch -aで、ローカルとリモートのブランチ名が main であることが確認できた。

hiroki@shibatahiroshitakanoiMac bingo % git branch -a
* main
  remotes/origin/main

git branch -a の -a は all の略である。ローカルブランチだけでなく、GitHub上のリモートブランチも含めて確認できる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です