既存の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上のリモートブランチも含めて確認できる。
コメントを残す