首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建一个Git存储库,其默认分支名称不是"master"?

如何创建一个Git存储库,其默认分支名称不是"master"?
EN

Stack Overflow用户
提问于 2017-03-18 07:03:53
回答 4查看 138.4K关注 0票数 262

亲吉特书里,上面写着

“出处”并不特殊 就像Git中的分支名称“主人”没有任何特殊的含义一样,“起源”也没有任何特殊的含义。当您运行git init时,“”是启动分支的默认名称,这是它被广泛使用的唯一原因,而“”是远程运行git克隆时的默认名称。如果您运行的是git克隆-o引导,那么您的默认远程分支将是booyah/master。

这意味着,我们可以使用默认的分支名作为主分支或主分支或类似的东西。我在man git-init中没有看到任何选项,它将使用不同的默认分支名称初始化repo

GitHub演示如何设置默认的分支名称。在其设置页面中。但我不是在谈论如何在任何特定的Git托管站点上设置它。我严格要求的只是Git,而不是任何具体的Git托管站点。

有办法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-03-18 07:14:17

更新的Git,新的回购

由于GITVersion2.28.0,git init命令现在接受一个--initial-branch (或简称-b )参数。这两个命令创建了一个新的Git分支,名为“主干”,这对我来说总是比“主人”更有意义(什么的主人?)

代码语言:javascript
复制
git init --initial-branch=trunk
git init -b trunk

这可以通过init.defaultBranch设置进行配置。如果我希望所有新的repos都将“主干”作为默认分支:

代码语言:javascript
复制
git config --global init.defaultBranch trunk

旧Git,新回购

有些系统仍然有较老的Git安装。我的Debian 10服务器(Buster,截至2020年10月的稳定版本)附带了Git 2.20,它不支持-b选项。一种选择是创建存储库,然后更改分支名称。此技术适用于正常(非裸)恢复:

代码语言:javascript
复制
git init
git checkout -b trunk

这将创建一个新的存储库,将trunk作为当前分支而不是master。分支master实际上并不存在--分支在至少有一个提交之前是不会被创建的。在创建分支之前,分支只存在于.git/HEAD中,这解释了为什么master分支在切换到trunk时会消失。

裸Repos

对于简单的repos,您不能运行git checkout (这就是赤裸的意思)。相反,您可以将头更改为指向另一个分支:

代码语言:javascript
复制
git init --bare
git symbolic-ref HEAD refs/heads/trunk

旧Repos

如果您已经提交了,则可以运行git branch -m

代码语言:javascript
复制
git init
touch file.txt
git add file.txt
git commit -m 'commit 1'
git branch -m trunk

这会将创建后的分支从master重命名为trunk

这看起来确实有点笨重,因为机制是不同的,取决于存储库是否是空的,但它可以工作。您还可以将其视为“创建一个新分支并删除master”。

票数 386
EN

Stack Overflow用户

发布于 2018-06-15 18:00:38

您可以间接地将git init配置为使用不同的默认分支:当前分支由HEAD定义,它“只是”一个文本文件,告诉Git哪个引用是当前的。

使用init.templateDir,您可以要求git init使用另一个:

代码语言:javascript
复制
# ~/.config/git/config or ~/.gitconfig
[init]
    templateDir = ~/.config/git/template/

~/.config/git/template/HEAD中,放置一行(+换行):ref: refs/heads/main (默认为分支main)。

在创建存储库时,templateDir的全部内容被复制到.git目录中;默认值(此处为/usr/share/git-core/templates)包含一些示例钩子和其他文件,但是您可以使用新的模板目录来设置默认钩子。

代码语言:javascript
复制
$ tree /usr/share/git-core/templates
/usr/share/git-core/templates
├── branches
├── description
├── hooks
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── fsmonitor-watchman.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   ├── pre-receive.sample
│   └── update.sample
└── info
    └── exclude

3 directories, 13 files
票数 93
EN

Stack Overflow用户

发布于 2020-07-28 14:49:47

自从Git 2.28 (发布于2020年7月27日)成为新的配置选项以来,init.defaultBranch正在被引入以取代硬编码术语master

默认保留为master

用户可以使用以下方法覆盖配置变量的默认值:

代码语言:javascript
复制
$ git config --global init.defaultBranch main

有关更多详细信息,请参阅git一章介绍init.defaultBranch

票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42871542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档