4

我想使用git init分支名称为prod的命令创建一个新的 git 存储库。我在本文档git init中搜索了command支持的所有选项以覆盖默认分支名称master

不幸的是,没有这样的选择。

自定义git的源代码是唯一的选择吗?

4

3 回答 3

3

使用git 2.28.0,可以使用设置配置默认分支名称init.defaultBranch

git config --global init.defaultBranch prod

更多信息:https ://github.blog/2020-07-27-highlights-from-git-2-28/#introducing-init-defaultbranch

于 2020-07-28T00:38:45.217 回答
1

如果它是一个新的 git 存储库,你可以这样做

git checkout -b prod

你将站在一个名为“prod”的新分支上。

或者,如果您已经向它提交了一些东西,只需重命名主分支:

git branch -m master prod

此代码可以使用名为“prod”的分支创建一个新存储库

mkdir repo
cd repo
git init && git checkout -b prod
于 2016-08-12T18:37:54.963 回答
0

为了更改用户在克隆时签出的默认分支,您必须在远程存储库上创建一个HEAD指针。通过运行,该参考在您的本地存储库中看起来像这样:

git branch -avv
remotes/origin/HEAD       -> origin/master

默认情况下,这是master,但您可以更改 Github 中的默认分支。其他托管服务在此问题中讨论了类似的方法。如果您是自托管的或对远程服务器具有 shell/文件系统访问权限,则可以使用以下命令手动设置:

git symbolic-ref HEAD refs/heads/prod

获取遥控器后,您应该会看到以下更新:

remotes/origin/HEAD       -> origin/prod

现在,当用户克隆您的存储库时,他们将自动prod签出分支。


然而,你的具体问题init让我发现了 Github 的一个有趣的奇怪之处——即使存储库只有一个名为prod它的分支,它也不会自动创建HEAD指针。

让我们创建一个裸存储库,设置分支名称,然后提交:

git init
git checkout -b prod
touch file1
git add .
git commit -m 'init repo'

创建远程仓库:

curl --data '{"name":"myproject"}' -u YOUR_GITHUB_USERNAME https://api.github.com/user/repos

添加遥控器并推送:

git remote add origin https://github.com/YOUR_GITHUB_USERNAME/myproject.git
git push -u origin prod

为了测试这一点,让我们跳到一个新文件夹并克隆项目,看看它对其他人来说会是什么样子。

git clone https://github.com/YOUR_GITHUB_USERNAME/myproject.git
Cloning into 'myproject'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
Checking connectivity... done.
warning: remote HEAD refers to nonexistent ref, unable to checkout.

特别注意最后一行:

warning: remote HEAD refers to nonexistent ref, unable to checkout.

出于某种原因,Github 没有HEAD为我们创建那个指针,所以 git 默认会回退到使用master我们的 repo 中不存在的分支。因此,当您cd进入新文件夹时,您会注意到您实际上已经签出了一个master没有提交的裸分支,但是prod如果您只是签出它,该分支就在那里。这很烦人,所以看起来我们仍然需要手动更新 Github 上的默认分支。

这就是它变得奇怪的地方。Github 已经将该分支显示为默认分支,因此我们无法更新它

在此处输入图像描述

我想出解决此问题的唯一方法是创建另一个临时分支,将其更改为默认分支,然后将其更改回来。

现在,当有人克隆它时,他们将prod自动签出分支。

于 2016-08-12T20:31:00.983 回答