无法将我的主分支更改为本地主分支

Can't change my master branch to main locally

我真的需要一些关于分支重命名的帮助。

不幸的是,我无法在主分支上推送 github,我必须使用 master 分支,因为我无法在本地更改我的分支名称。

我需要提交一次才能使用此命令:git branch -M main

但是如果我创建一个新文件并放置一个 git init,显示分支将是 master 并且 运行 git branch -M main 将导致我出现此错误: error: refname refs/heads/master not found fatal: Branch rename failed

我想知道是否有其他方法可以在本地将分支重命名为main,而无需在每次创建文件后手动重命名。

非常感谢。

要在本地将名称从 master 更改为 main,甚至在创建 commit.follow 这些步骤之前:-

  1. 导航到您的项目所在的目录。

  2. 它将显示隐藏文件,因为默认情况下,.git 将被隐藏。

  3. 里面.git,有一个文件,HEAD,用文本编辑器打开它。

  4. 你会看到,ref: refs/heads/master

  5. ref: refs/heads/master 中将 master 更改为 main。

它将master分支重命名为main。

TL;DR

进行提交,或使用 git checkout --orphan main(或 git switch --orphan main),或使用 git init -b main(如果有)。

多头

在一个完全空的新 Git 存储库中,Git 处于一种有点奇怪的状态:

  • mastermain 这样的 分支名称 必须包含一些有效的现有提交的哈希 ID。
  • 尚无提交。

因此,还不能存在分支名称。

不过,例如,git status 会告诉您您是 on branch master。这是一种奇怪的状态:您 在一个不存在的分支上

在 Git、git branch -mgit branch -M 的最新版本中——它们都重命名了一个分支——变得更聪明了,因此它们可以重命名这个不存在的分支。如果您拥有 Git(2.30 或更高版本)的最新版本之一,git branch -m main 将在此状态下工作。

旧版本的 Git,但是,只允许您重命名实际 存在 的分支。所以在这种情况下,要使用 git branch -m main,您必须如您所说:

commit once

注意只需要make 一个 commit,这样commit就存在了,分支名就存在了。这是 创建提交 处于此状态 创建分支名称的行为。分支名称在那里,只是它不存在。然后你 运行 git commit,现在分支名称在那里并且 确实 存在。您刚刚进行的新提交是 root 提交: 没有父项的提交。仅此而已。

您不必使用 git branch -m 来重命名这个未出生的分支。 如果您 想使用 git branch -m 重命名它,它必须是 现有的 分支,但您可以在 存在 之前重命名它。在 2.30 之前的 Git 版本中,你只需要使用一些其他命令。

在 Git 版本 2.28 或更高版本中,git init 采用 --initial-branch(或简称 -b),它允许您指定不包含的分支名称不存在,但你在。所以 git init -b main 成功了。

如果您的 Git 早于 2.28,您可以像往常一样 运行 git init,然后使用带有 --orphan 标志的 checkout 或 switch 命令。这将创建一个尚不存在的分支。这个标志从 Git 1.7.2 开始工作:它的目的是重新创建你在一个不存在的分支上的特殊状态。然后,您所做的 next 提交通过创建根提交并将新提交的哈希 ID 像往常一样存储在分支名称中来创建该分支。哈希 ID 的存储创建了分支名称,现在解决了位于不存在的分支上的特殊情况。

请注意,当您在一个不存在的分支上并使用 git checkout --orphan 时,您更改了不存在的分支的名称。旧名称仍然不存在,因此您 将要创建具有未来提交的分支的事实现在被遗忘了:Git 不知道 master 从来没有出现过,也不会去创造它。它将改为创建尚不存在的 other 名称。