TL;DR
提交,或使用git checkout --orphan main(或git switch --orphan main),或使用git init -b main(如果有)。
长篇
在一个全新的、完全空的 Git 存储库中,Git 处于一种有点奇怪的状态:
- 像
master 或main 这样的分支名称 必须包含一些有效的现有提交的哈希ID。
- 尚无提交。
因此,还不能存在分支名称。
尽管如此,例如,git status 会告诉您您是on branch master。这是一种奇怪的状态:你在一个不存在的分支上。
在最新版本的 Git 中,git branch -m 和 git branch -M(两者都重命名了一个分支)进行了智能处理,以便他们可以重命名这个不存在的分支。如果您有这些最新版本的 Git(2.30 或更高版本)之一,git branch -m main 将在此状态下工作。
然而,旧版本的 Git 只允许您重命名实际存在的分支。所以在这种情况下,要使用git branch -m main,你必须如你所说:
提交一次
注意,你只需要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 名称。