我试图弄清楚如何git init
使用不同的默认分支名称而不是master
第一次提交,但我找不到它的 git 配置或任何允许我这样做的东西(例如别名仅适用于命令,而不是分支名称)。
有没有办法更改设置的默认第一个分支名称git init
?
T. *_*ley 159
从 Git 2.28(2020 年 7 月 27 日发布)开始,您现在可以配置在初始化新存储库时创建的分支的名称:
$ git config --global init.defaultBranch main
Run Code Online (Sandbox Code Playgroud)
设置此变量后,运行git init
将生成一个存储库,其初始分支为main
:
$ git init
Initialised empty Git repository in /home/thomas/test-git-repo/.git/
$ git status
On branch main
No commits yet
nothing to commit (create/copy files and use "git add" to track)
Run Code Online (Sandbox Code Playgroud)
发行说明:https : //lore.kernel.org/git/xmqq5za8hpir.fsf@gitster.c.googlers.com/
小智 13
设置默认分支的一种方法是编辑文件~/.gitconfig
。添加以下行:
[init]
defaultBranch = main
Run Code Online (Sandbox Code Playgroud)
现在,当您运行时git init
,main
将成为您的默认分支。这类似于git config --global init.defaultBranch main
@t-kiley 提到的跑步。
Son*_*Ex2 12
更改默认 HEAD 的一种简单方法是在 git 模板目录中创建一个 HEAD。首先,将您的模板目录配置为~/Templates/git.git
(或您喜欢的任何内容):
$ git config --global init.templateDir '~/Templates/git.git'
$ cp -r /usr/share/git-core/templates ~/Templates/git.git
Run Code Online (Sandbox Code Playgroud)
然后,HEAD
在模板目录中创建文件:
$ echo 'ref: refs/heads/default' > ~/Templates/git.git/HEAD
Run Code Online (Sandbox Code Playgroud)
一切顺利!每当您运行时git init
,您现在都会收到以下消息:
$ git init
Reinitialized existing Git repository in [...]
Run Code Online (Sandbox Code Playgroud)
出于某种原因,git 根据HEAD
文件在 中的存在来决定是否使用此消息.git
,而不是依赖于是否.git
必须创建。但是,它向您显示什么消息实际上并不重要。从 git-init 手册页:
git init
在现有存储库中运行是安全的。它不会覆盖已经存在的东西。重新运行的主要原因git init
是选择新添加的模板(或者将存储库移动到另一个地方,如果有的话--separate-git-dir
)。
也就是说,git init
保证不会覆盖HEAD
你放在模板中的,也不会使用模板的HEAD
覆盖现有的HEAD
。由于这是明确记录的,因此您可以依赖它。
此外,它还说:
模板目录中名称不以点开头的文件和目录在
$GIT_DIR
创建后会被复制到.
这意味着您还可以依赖模板在创建后立即复制.git
,而不是稍后复制。
(当然,这是我个人对手册的解释。git 开发人员完全有可能不同意。)
Ikk*_*kke 11
在早于2.28版本的Git,HEAD
被硬编码到点refs/heads/master
。
if (create_symref("HEAD", "refs/heads/master", NULL) < 0)
Run Code Online (Sandbox Code Playgroud)
因此,您无法传递任何配置设置或选项以git init
将其更改为其他内容。
什么是可能的,虽然是改一下HEAD
后指向正确git init
的帮助下git symbolic-ref
:
$ git init
$ git symbolic-ref HEAD refs/heads/test
Run Code Online (Sandbox Code Playgroud)
这将更HEAD
改为指向名为test
. 然后,当您创建第一个提交时,将调用分支test
而不是master
.
归档时间: |
|
查看次数: |
27606 次 |
最近记录: |