我们希望为我们的项目强制执行一个新策略,现在将主分支称为发布分支,以确保更清楚如何使用分支。当然,我们也会开发和发布候选分支。
我知道我可以通过简单地使用以下命令在本地重命名主分支:
git branch -m master release
然而,这只是本地的。即使我把它推到遥控器上,HEAD仍然指向远程主分支。我希望完全摆脱master分支,并在初始克隆时创建默认的本地分支,然后释放。
我怎样才能做到这一点?
编辑:似乎由于原点是在一台有功能的服务器上,我在删除主分支时遇到错误。我现在试图看看是否有可能改变它,以便默认分支是'release'。
答案 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>
这对我有用: 现在,远程存储库使用 在设置裸存储库以根据需要进行配置后,也非常有用。
git branch -m master release
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。