我试图弄清楚如何git init
使用不同于master
第一次提交的默认分支名称,但我找不到它的 git 配置或任何允许我这样做的东西(例如别名只适用于命令,而不是分支名称)。
有什么方法可以更改设置的默认第一个分支名称git init
吗?
我试图弄清楚如何git init
使用不同于master
第一次提交的默认分支名称,但我找不到它的 git 配置或任何允许我这样做的东西(例如别名只适用于命令,而不是分支名称)。
有什么方法可以更改设置的默认第一个分支名称git init
吗?
从 Git 2.28(2020 年 7 月 27 日发布)开始,您现在可以配置在初始化新存储库时创建的分支的名称:
设置此变量后,运行
git init
将生成一个存储库,其初始分支为main
:发行说明:https ://lore.kernel.org/git/[email protected]/
在 2.28 之前的 Git 版本中,
HEAD
硬编码为指向refs/heads/master
.所以没有配置设置或选项可以传递给
git init
将其更改为其他内容。但是,有可能在以下帮助下更改
HEAD
指向的内容:git init
git symbolic-ref
这将更
HEAD
改为指向一个名为 的(尚不存在的)分支test
。然后,当您创建第一个提交时,将调用该分支test
而不是master
.更改默认 HEAD 的一种简单方法是在 git 模板目录中创建一个 HEAD。首先,将您的模板目录配置为
~/Templates/git.git
(或您喜欢的任何内容):然后,
HEAD
在模板目录中创建文件:你很高兴去!无论何时运行
git init
,您现在都会收到消息:出于某种原因,git 决定是否使用此消息基于
HEAD
文件在 中的存在.git
,而不是依赖于是否.git
必须创建。但是,它向您显示什么消息并不重要。从 git-init 手册页:也就是说,
git init
保证不会覆盖HEAD
你放在模板中的,也不会用模板HEAD
覆盖已有HEAD
的。由于这是明确记录的,因此您可以依赖它。此外,它还说:
这意味着您还可以依赖在创建后立即复制的模板
.git
,而不是稍后复制。(当然,这是我个人对手册的解读,完全有可能git开发者不同意。)
设置默认分支的一种方法是编辑
~/.gitconfig
文件。添加以下行:现在当你运行时
git init
,main
将是你的默认分支。这类似于git config --global init.defaultBranch main
@t-kiley 提到的跑步。如前所述,HEAD 被硬编码为指向 master。但是,您可以创建一个 shell 别名,以随心所欲
git init
。如果你使用 bash 作为你的 shell,把这样的东西放在你的 .bashrc 中:这将用
git
函数替换命令。此函数将使命令git
运行完全相同,除非您在调用git init
时不带任何其他参数。当您调用git init
它时,它将初始化存储库。接下来它将检查分支“daddy”是否已经存在。如果是,它将检出该分支,否则它将创建该分支并将您移至该分支。该线程的大部分答案都适用于某些 git 版本,但没有答案适用于我正在使用的所有版本(git 版本和2.7
)。2.25
2.30
但多亏了你们所有的回答,我才能够混合你们的共同想法,我终于找到了一种通过一种设置支持所有版本的方法:[编辑:原来,我的观察是错误的。由于我的特殊设置,它没有用。如果您对上述解决方案有疑问,
这里有另一种方法(针对 git 版本
2.7
和测试)。]2.25
2.30
init.defaultBranch
结合包装函数(仅适用于不支持 init.defaultBranch 的 git 版本,它在会话开始时被查询一次)。包装函数在 init 之后直接向配置的默认分支发出 git checkout。
.gitconfig
bash 别名
我通过搜索找到了这个问题。我意识到我在回答一个老问题,但对于可能到达这里的其他人,GitHub 有一个页面,介绍如何为在那里创建的任何存储库配置主分支名称,以及更改主分支名称的说明:
从 master 重命名默认分支