git 分支 -M 主要

Posted

技术标签:

【中文标题】git 分支 -M 主要【英文标题】:git branch -M main 【发布时间】:2021-06-14 19:56:19 【问题描述】:

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

github网站上给出的代码是:

git branch -M main

这对我不起作用,所以我想我会在这里提到它。我很难相信 这个问题只发生在我身上。

error: refname refs/heads/master not found
fatal: Branch rename failed

【问题讨论】:

【参考方案1】:

您在 your own answer 中提到 git branch -m main(或与 -M 相同)仅在您进行初始提交后才有效。

或者,在创建任何提交之前,使用git checkout -b main 将未出生分支的名称切换为main

创建初始提交,然后重命名分支与更改未出生的分支名称,然后进行初始提交之间没有功能差异。提交时不记得哪个分支是当前分支,1 因此您可以随时更改分支名称。 (其他在他们的大脑中记住了分支名称,并且可能在克隆中保存了一些分支名称,因此最好在其他人掌握这些名称之前完成所有这些名称更改。但这不在你的范围内自己的 Git。)


1不过,git 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,在该分支上进行热修复。然后您的存储库将偶尔有“合并分支修补程序”提交,但这些消息中的每一个都是针对 不同 修补程序的。这里传达的信息几乎是无用的——你需要合并的日期,而不仅仅是消息,才能找到正确的“热门 bug”。在最坏的情况下,它可能比无用更糟糕,因为它可能会让你看到错误的“热门错误”。如果您手动将其替换为“merge fix for critical customer bug #1234”,您会收到一条有用的消息。

(如果您的分支名称包含错误参考编号,那么这些消息很有用。“进入分支 Y”部分,它使用 当前 分支,不过,对我来说似乎仍然很边缘。)

【讨论】:

感谢您的解释。 这是一个很好的解释,但是当我按照步骤说的那样做时,它无法识别单词分支 @daddycardona:恐怕我需要看到你的 Git 命令行会话的剪切和粘贴才能知道你的意思。 @torek 我想通了,我写了一些愚蠢的小错误,并想出了如何做到这一点,并制作了提交它的钥匙以及一切,但感谢您的回复:)【参考方案2】:

必须至少有一个提交才能使其工作。

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

请注意How do I rename a local Git branch?的更完整解释

【讨论】:

您也可以将提交和空提交作为初始提交? git commit —allow-empty -m ‘initial’【参考方案3】:

重要的是要指出,git 创建一个名为 master 的初始分支的唯一原因是由于在安装 git-scm 期间设置了配置设置 init.defaultbranch。如果保留默认的让 Git 决定,它将是 master。如果您选择选项 Override the default... 并且您指定了其他内容,例如预设 main,这将是系统范围的默认值。选择此项,您可以在 repo init 期间跳过命名初始分支的步骤。

检查系统设置

您可以通过以下方式检查系统设置的值:

git config --system init.defaultbranch

...返回系统范围的设置值。

覆盖系统设置

您可以覆盖全局、用户、级别的设置:

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

或者,在每个项目级别:

git config --add init.defaultbranch mastress

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

【讨论】:

以上是关于git 分支 -M 主要的主要内容,如果未能解决你的问题,请参考以下文章

Git分支管理实战

git各种分支说明

[Git]3_分支管理

Git 基本分支规范

git branch分支管理思考

git分支的合并