我想创建一个 github 存储库并将main
分支重命名为master
.
如果我在 github 上创建一个新的存储库并执行
git init
git add README.md
git commit -m "first commit"
git branch -M master
Run Code Online (Sandbox Code Playgroud)
我得到
error: refname refs/heads/master not found
fatal: Branch rename failed
Run Code Online (Sandbox Code Playgroud)
所以我似乎不太了解git。这里有什么问题?
当我玩弄上面的东西时,我一定很困惑。发生以下情况:
git init
创建存储库
git add README.md
添加文件
git commit -m "first commit"
将文件添加到master
分支,因为这仍然是 git 的默认值
所以我一开始就不必重命名它。现在 Github 使用默认的 main,可以在 github.com 上的设置 -> 存储库中更改
Cod*_*ger 27
使用-m
选项(移动/重命名)而不是-M
使用您要重命名的分支的名称(此处main
)将起作用。然后您可以推送重命名的分支并维护您的引用日志。
git branch -m main master
git push -u origin master
Run Code Online (Sandbox Code Playgroud)
我还写了一篇博客文章,其中包含更多详细信息,以防在重命名分支之前存储库被其他人克隆。你可以在这里查看。
如果README.md
实际上不存在,git checkout -B master
就会做你想做的事。 git branch -M
期待一个实际引用某物的完整引用,而不是存根git init
(或git checkout --orphan
)创建的。我同意它“应该”处理这种情况,是否值得修补取决于任何有能力编写好修补程序的人。不应该太难。
我得出这个答案的测试用例只是在空目录中运行命令;产生了您报告的症状。在(已经)包含 a 的目录中运行它们可以按照README.md
您想要的方式运行,即不会产生该错误。您是否期望git init
创建默认值README.md
?