git branch -M main

31

Github现在推荐的一件事是将分支更改为main而不是master。

Github网站上给出的代码是:

git branch -M main

那对我从来没有起到作用,所以我想在这里提一下。我很难相信这个问题只会发生在我身上。

error: refname refs/heads/master not found
fatal: Branch rename failed
4个回答

23

更新: Git 2.30 中的 -m-M 选项已经升级,以允许在特殊情况下重命名尚不存在的当前分支名称,例如当您位于新的空存储库中时。


您在自己的回答中提到,只有在进行了初始提交后,git branch -m main(或使用-M)才能正常工作。

或者,在创建任何提交之前,可以使用git checkout -b main将未出现的分支名称更改为main

在创建初始提交然后重命名分支与更改未出现的分支名称然后进行初始提交之间没有功能上的区别。 提交不会记住它们生成时的当前分支名称,1因此您可以随时更改分支名称。(其他会记住分支名称,在他们的大脑中,并可能在克隆中保存一些分支名称,因此最好在任何其他人获取这些名称之前进行所有这些名称更改。 但这超出了你自己的Git之外。)


1git merge命令生成默认的合并消息:

merge branch X [into Y]

git pull 会生成一个默认的合并信息:

merge branch X of 'url' [into Y]

X是你传递给git merge的参数,使用git pull运行git merge时增加了一个URL,而Y则表示当前分支的名称,如果当前分支不是指定的“特殊”分支,则会出现。过去这个值被硬编码为master,但现在可以配置。所有这些操作的最终结果是,当将功能合并到master/main时,您往往会得到形式为merge branch feature的消息,而当将功能合并到其他分支时,则会得到形式为merge branch feature into develop的消息。

请注意,这些自动生成的消息传达的有用信息相对较少,特别是如果您在合并之后删除feature分支。举个例子,假设您将名称hotfix保留为用于进行热修复的临时分支。那么您的仓库中将偶尔出现“merge branch hotfix”的提交,但每条消息都是针对不同的热补丁。这里所传达的信息几乎没有用处——您需要合并的日期,而不仅仅是消息才能找到正确的“热补丁”。在最坏的情况下,它可能会更糟,因为它可能会让您看错“热补丁”。如果您手动将其替换为“merge fix for critical customer bug#1234”,则会得到有用的消息。

(如果您的分支名称包括bug参考编号,那么这些消息是有用的。使用当前分支的“into branch Y”部分对我来说仍然相当边缘。)


这是一个很好的解释,但当我按照步骤操作时,它无法识别单词“branch”。 - daddycardona
@daddycardona:恐怕我需要看到你的Git命令行会话的剪切和粘贴,才能知道你在这里的意思。 - torek
@torek,我解决了。我写了一些愚蠢的小错误,但是我找到了如何做到这一点并使键提交它和所有内容,但还是谢谢你的回复 :) - daddycardona

5

这个操作至少需要有一个提交记录才能生效。

git status

On branch master

No commits yet


进行第一次提交。

git add *.html
git commit -m 'first'

[master (root-commit) 455481e] first
 1 file changed, 54 insertions(+)
 create mode 100644 start.html

git branch -m master main
git status

On branch main

请参阅更详细的说明:如何重命名本地 Git 分支?

你也可以提交一个空的提交作为初始提交:git commit —allow-empty -m ‘initial’ - evolutionxbox

5

GitHub使用“main”作为您的主要分支名称。它曾经使用过“master”,但git仍默认为“master”。您需要确保gitGitHub都使用相同的分支名称,因此请使用“main”。实现这一目标的最佳方法是将您的默认分支名称更改为“main”:

$ git config --global init.defaultBranch main

2
重要的是要指出,git创建一个名为master的初始分支的唯一原因是在安装git-scm时设置了init.defaultbranch配置。如果让Git决定,则默认为master。如果选择覆盖默认值...选项并指定其他内容,例如预设的main,则这将是系统范围内的默认值。选择此选项后,您可以跳过命名存储库初始化期间的初始分支的步骤。

检查系统设置

您可以使用以下命令检查系统设置的值:
git config --system init.defaultbranch

返回系统范围的设定值。

覆盖系统设置

您可以使用以下方法在全局、用户级别上覆盖设置:

git config --global --add init.defaultbranch mistress

或者,按项目级别进行:

git config --add init.defaultbranch mastress

或者您可以手动更改 gitconfig 文件,该文件 - 在 Windows 上 - 存储在 etc 文件夹中。找到 init.defaultbranch 行并进行相应的编辑。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接