git 分支-M 主要
git branch -M main
github 现在推荐的其中一件事是将分支更改为 main 而不是 master。
github 网站上给出的代码是:
git branch -M main
这对我来说永远行不通,所以我想我会在这里提到它。我很难相信
这个问题只发生在我身上。
error: refname refs/heads/master not found
fatal: Branch rename failed
必须至少有一个提交才能工作。
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 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
,在该分支上进行热修复。然后您的存储库偶尔会有“合并分支修补程序”提交,但这些消息中的每一条都是针对 不同的 修补程序的。此处传达的信息几乎毫无用处——您需要合并的日期,而不仅仅是消息,才能找到正确的“热门错误”。在最坏的情况下,它可能比无用更糟糕,因为它可能会让您看到错误的“热门错误”。如果您手动将其替换为“针对关键客户错误 #1234 的合并修复”,您会收到一条有用的消息。
(如果您的分支名称包含错误参考编号,那么 这些消息很有用。“进入分支 Y”部分使用 当前 分支,不过对我来说仍然很边缘。)
重要的是要指出 git 创建名为 master 的初始分支的唯一原因是由于安装期间设置的配置设置 init.defaultbranch
git-scm。如果保留默认 让 Git 决定 它将是 master。如果您 select 选项 Override the default... 并且您指定了其他内容,例如预设 main,这将是系统范围的默认值。 Select 这样您就可以跳过在 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 行并进行相应的编辑。
github 现在推荐的其中一件事是将分支更改为 main 而不是 master。
github 网站上给出的代码是:
git branch -M main
这对我来说永远行不通,所以我想我会在这里提到它。我很难相信 这个问题只发生在我身上。
error: refname refs/heads/master not found
fatal: Branch rename failed
必须至少有一个提交才能工作。
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 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
,在该分支上进行热修复。然后您的存储库偶尔会有“合并分支修补程序”提交,但这些消息中的每一条都是针对 不同的 修补程序的。此处传达的信息几乎毫无用处——您需要合并的日期,而不仅仅是消息,才能找到正确的“热门错误”。在最坏的情况下,它可能比无用更糟糕,因为它可能会让您看到错误的“热门错误”。如果您手动将其替换为“针对关键客户错误 #1234 的合并修复”,您会收到一条有用的消息。
(如果您的分支名称包含错误参考编号,那么 这些消息很有用。“进入分支 Y”部分使用 当前 分支,不过对我来说仍然很边缘。)
重要的是要指出 git 创建名为 master 的初始分支的唯一原因是由于安装期间设置的配置设置 init.defaultbranch
git-scm。如果保留默认 让 Git 决定 它将是 master。如果您 select 选项 Override the default... 并且您指定了其他内容,例如预设 main,这将是系统范围的默认值。 Select 这样您就可以跳过在 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 行并进行相应的编辑。