Reputation: 1076
I'd like to create a github repository and rename the main
branch to master
.
If I create a new repository on github and do
git init
git add README.md
git commit -m "first commit"
git branch -M master
I get
error: refname refs/heads/master not found
fatal: Branch rename failed
so I seem to somehow not understand git well enough. What's the issue here?
I must have gotten confused when I was playing around with the above. The following happens:
git init
create the repository
git add README.md
adds the file
git commit -m "first commit"
adds the file to the master
branch since that still default for git
so I never have to rename it in the first place. Now Github uses the default main, which can be changed in settings -> repositories on github.com
Upvotes: 65
Views: 36376
Reputation: 14404
On GitLab:
git branch -m main master
git push -u origin master
If you want to delete main branch you need first to go to "Settings -> Repository" on GitLab web page. Under "Branch defaults" and "Protected branches" menus change main to master. Then you can delete main branch:
git push origin --delete main
Upvotes: 1
Reputation: 1528
Using the -m
option (move/rename) instead of -M
with the name of the branch you're renaming from, here main
, will work. Then you can push your renamed branch and maintain your reflog as well.
git branch -m main master
git push -u origin master
I also wrote a blog post with more details which can in case the repo was cloned by someone else before renaming the branch. You can check it out here.
Upvotes: 47
Reputation: 1284
I did it like this in Azure DevOps. It should be the same on GitHub.
Run these lines in your terminal at the project root.
git branch -m main master
git push -u origin master
git push origin --delete main
Then I set master
as the default branch.
Upvotes: 11
Reputation: 60235
If README.md
doesn't actually exist, git checkout -B master
will do what you want. git branch -M
is expecting a full ref that actually refers to something, not the stub git init
(or git checkout --orphan
) creates. I'd agree it "should" handle this case, whether it's worth a patch is up to anybody capable of writing a good one. Shouldn't be too hard.
My test case that led to this answer was simply running your commands in an empty directory; that produced your reported symptom. Running them in a directory that (already) includes a README.md
works the way you want, i.e. doesn't produce that error. Did you perhaps expect git init
to create a default README.md
?
Upvotes: 5