我想使用git init
命令创建一个新的git存储库,其分支名称为 prod 。我在此documentation中搜索了git init
命令支持的所有选项,以覆盖默认分支名称 master 。
不幸的是,没有这样的选择。
自定义git的源代码是唯一的选择吗?
答案 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已经将分支显示为默认值,因此我们无法更新它。
我弄清楚如何解决这个问题的唯一方法是创建另一个临时分支,将其更改为默认分支,然后立即将其更改。
现在,当有人克隆它时,他们将自动检出prod
分支。