创建一个空的Git存储库,其分支名称为prod

时间:2016-08-12 18:25:21

标签: git branch git-init

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

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

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

3 个答案:

答案 0 :(得分:2)

使用git 2.28.0,可以使用设置init.defaultBranch

配置默认分支名称。

git config --global init.defaultBranch产品

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

答案 1 :(得分:1)

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

git checkout -b prod

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

或者,如果你已经提交了一些东西,只需重命名master分支:

git branch -m master prod

此代码可以创建一个名为“prod”

的分支的新存储库
mkdir repo
cd repo
git init && git checkout -b prod

答案 2 :(得分:0)

要更改用户在克隆时检出的默认分支,您必须create a HEAD pointer on the remote repository。通过运行:

,引用在本地存储库中看起来像这样
git branch -avv
remotes/origin/HEAD       -> origin/master

默认情况下,这是master,但您可以change the default branch in Github。其他托管服务有类似的方法discussed in this question。如果您是自托管的或具有对远程服务器的shell /文件系统访问权限,则可以使用以下命令手动设置:

git symbolic-ref HEAD refs/heads/prod

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

remotes/origin/HEAD       -> origin/prod

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

但是,关于init的具体问题让我发现Github有一个奇怪的奇怪之处 - 即使存储库只有一个名为prod的分支,它也不会自动创建HEAD 1}}指针。

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

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分支,这在我们的仓库中不存在。因此,当您cd进入新文件夹时,您会注意到您实际上已经签出了一个名为master的裸分支,但没有提交,但如果您只是检查它,prod分支就在那里出。这非常烦人,所以看起来我们仍然需要手动更新Github上的默认分支。

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

enter image description here

我弄清楚如何解决这个问题的唯一方法是创建另一个临时分支,将其更改为默认分支,然后立即将其更改。

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