如何将我的git'master'分支重命名为'release'?

时间:2012-01-06 18:26:23

标签: git version-control branch git-branch

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

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

git branch -m master release

然而,这只是本地的。即使我把它推到遥控器上,HEAD仍然指向远程主分支。我希望完全摆脱master分支,并在初始克隆时创建默认的本地分支,然后释放。

我怎样才能做到这一点?

编辑:似乎由于原点是在一台有功能的服务器上,我在删除主分支时遇到错误。我现在试图看看是否有可能改变它,以便默认分支是'release'。

8 个答案:

答案 0 :(得分:95)

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

答案 1 :(得分:9)

查看您的主分支

git checkout master

创建发布分支并切换到它

git branch release
git checkout release

将其推送到服务器

git push origin release

删除服务器上的主分支参考

git push origin :master

删除本地主分支

git branch -d master

答案 2 :(得分:2)

正如其他人之前所说,这里的问题是Gitorious,它不允许你默认删除HEAD分支。你有两个选择来解决这个问题。一种是登录到功能强大的服务器(使用ssh),在文件服务器上找到git-repository并添加:

[receive]
        denyDeleteCurrent = warn

到配置。

更简单的选择就是更改默认分支。在功能强大的Web界面中找到您的存储库,按“编辑存储库”,然后设置“头部更改符号引用,git存储库中的HEAD指向:”。完成此操作后,您可以删除主分支。

答案 3 :(得分:2)

注意:此答案适用于您拥有命令行访问权限的自托管git服务器。

由于尝试从客户端删除remote master确实是不允许的,我确实认为禁止denyDeleteCurrent有意义,我不想更改该设置。

但是,我发现如果您对远程服务器 具有命令行权限,那么重命名主最简单方法是直接在远程运行重命名命令。 / p>

这对我有用:

  1. 通过SSH登录到远程git服务器
  2. 转到项目的xxx.git文件夹
  3. 运行:git branch -m master release
  4. 现在,远程存储库使用release作为其默认分支,任何客户端上该存储库上的任何git clone都将默认检出发布分支。

    在设置裸存储库以根据需要进行配置后,也非常有用。

答案 4 :(得分:2)

如果您使用 GitHub 遇到了此问题,请执行逐步操作,直到删除远程分支为止。它不会让你那样做。然后登录到Web界面,并在存储库上进入设置分支默认分支。将其更改为新分支,然后执行其余步骤。

答案 5 :(得分:1)

理想情况下,您需要设置跟踪,请执行以下操作:

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

现在,您要删除其他人吗?

git branch -d master
git push origin :master

简单!

答案 6 :(得分:1)

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

$ git config --global init.defaultBranch main

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

$ git init

在/home/thomas/test-git-repo/.git/中初始化的空Git存储库 $ git状态 在分支主体上

尚无提交

没什么要提交的(创建/复制文件并使用“ git add”进行跟踪) 发行说明:https://lore.kernel.org/git/xmqq5za8hpir.fsf@gitster.c.googlers.com/

cc Kiley

答案 7 :(得分:0)

既然已经完成了重命名分支的操作​​,那么可以将HEAD设置为release进行远程操作

git remote set-head origin release

然后要删除远程的master分支,至少在GitHub上,您必须是管理员。有关更多信息,请参阅this post