如何将 Git 的“ master”分支重命名为“ release”?

我们希望对我们的项目执行一个新的策略,即现在将主分支称为发布分支,以确保更清楚地了解应该如何使用该分支。当然,我们也会开发和发布候选分支。

我知道我可以通过简单地使用以下命名方法在本地重命名主分支:

git branch -m master release

然而,这只是局部的。即使我把它推向远程,HEAD 仍然指向远程主分支。我想摆脱主分支完全和使默认的本地分支初始克隆,被释放。

我怎么才能做到呢?

似乎是因为原点在 Gitorious服务器上,所以删除主分支时出现错误。我现在试图看看是否有可能改变这一点,使默认的分支是’发布’。

85812 次浏览

看看你的主树枝

git checkout master

创建发布分支并切换到它:

git branch release
git checkout release

推到服务器上

git push origin release

删除服务器上的主分支引用

git push origin :master

删除本地主分支

git branch -d master
git checkout -b release master    # Create and switch to the release branch
git push -u origin release        # Push the release branch to the remote and track it
git branch -d master              # Delete local master
git push --delete origin master   # Delete remote master
git remote prune origin           # Delete the remote tracking branch

请注意,如果您正在使用 GitHub,您需要在第3步之后首先更改 GitHub 上的“默认”分支:

在 github.com 上的存储库中,执行 设定树枝预设分行。将其更改为 释放,然后执行其余步骤。

理想情况下,你想设置跟踪,所以这样做:

git push origin HEAD:release
git checkout --track origin/release

现在,你想删除其他的吗?

git branch -d master
git push origin :master

很简单!

正如前面提到的,这里的问题是 Gitorious,它不允许您在每个默认情况下删除 HEAD 分支。你有两个选择来解决这个问题。一种是登录到 Gitorious 服务器(使用 ssh) ,在文件服务器上找到 Git 存储库,然后添加:

[receive]
denyDeleteCurrent = warn

配置。

更简单的选择是更改默认分支。转到 Gitorious Web 界面中的存储库,按下“编辑存储库”,并设置“头部更改 Git 存储库中 HEAD 指向的符号引用:”。完成此操作后,可以删除主分支。

注意: 这个答案适用于自托管的 Git 服务器,您可以通过命令行访问这些服务器。

由于试图从客户端删除 remote master的确是不允许的,而且我确实假设禁止 denyDeleteCurrent是有意义的,所以我不想改变这个设置。

但是,我发现 如果您有对远程服务器 的命令行访问权,那么重命名 master < em > 的最简单方法是直接在远程运行 rename 命令。

这对我很有效:

  1. 通过 SSH 登录到远程 git 服务器
  2. 转到项目的 xxx.git 文件夹
  3. 运行: git branch -m master release

现在,远程存储库使用 release作为其默认分支,该存储库上来自任何客户机的任何 git clone将在默认情况下签出发布分支。

在设置了一个空白存储库以根据您的需要进行配置之后,它也非常有帮助。

如果在使用 GitHub时遇到这个问题,请执行以下步骤,直到在远程上删除分支为止。它不会让你这么做的。然后登录到 Web 界面,在存储库中执行 设定树枝预设分行。将其更改为新的分支并执行其余步骤。

因为您已经完成了对分支的重命名,所以要将 HEAD 设置为 release以用于远程

git remote set-head origin release

然后,要删除远程 master分支,您必须是管理员,至少在 GitHub 上是这样。详情请参阅 这篇文章

从 Git 2.28(2020年7月27日发布)开始,您现在可以配置在初始化新存储库时创建的分支的名称:

$ git config --global init.defaultBranch main

在设置这个变量之后,运行 git init 将生成一个存储库,其初始分支是 main:

$ git init

在/home/thoma/test-Git-repo/. Git/中初始化空的 Git 存储库 $git status 在总支路上

还没有提交

无需提交(创建/复制文件并使用“ git add”进行跟踪) 发布说明: http://lore.kernel.org/git/xmqq5za8hpir.fsf@gitster.c.googlers.com/”rel = “ nofollow norefrer”> https://lore.kernel.org/git/xmqq5za8hpir.fsf@gitster.c.googlers.com/

Cc 凯莉