我们希望对我们的项目实施一项新政策,即现在将master分支称为release分支,以确保更清楚地了解如何使用该分支。当然,我们还将开发和发布候选分支。
我知道我可以通过使用以下命令在本地重命名master分支:
git branch -m master release
但是,仅在本地。即使我将此推到远程,HEAD仍指向远程master分支。我想完全摆脱master分支,并在初始克隆时发布默认的本地分支,然后发布。
我该如何实现?
EDIT:看来,由于源位于令人讨厌的服务器上,因此删除master分支时出现错误。我现在尝试查看是否可以更改此设置,以便默认分支为“ release”。
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
检出您的主分支
git checkout master
创建您的发布分支并切换到它
git branch release
git checkout release
将其推送到服务器
git push origin release
删除服务器上的master分支引用
git push origin :master
删除本地主分支
git branch -d master
如其他人先前所言,这里的问题是Gitorious,它不允许您默认删除HEAD分支。您有两种选择可以解决此问题。一种是登录到令人讨厌的服务器(使用ssh),在文件服务器上找到git-repository并添加:
[receive]
denyDeleteCurrent = warn
至配置。
一个更简单的选择就是更改默认分支。在繁琐的Web界面中转到您的存储库,按“编辑存储库”,然后设置“ Head将git存储库中的HEAD的符号引用更改为:”。完成此操作后,您可以删除master分支。
注意:此答案适用于您具有命令行访问权限的自托管git服务器。
由于确实不允许从客户端删除remote master
,并且我确实认为禁止denyDeleteCurrent
是有道理的,因此,我不想更改该设置。
但是,我发现重命名主服务器的最简单方法如果您具有对远程服务器的命令行访问权限是直接在远程计算机上运行重命名命令。
这对我有用:
git branch -m master release
现在,远程存储库使用release
作为其默认分支,并且默认情况下,来自任何客户端的该存储库中的任何git clone
都将签出发行分支。
在设置裸仓库以根据需要进行配置后也非常有帮助。
理想情况下,您想设置跟踪,所以请这样做:
git push origin HEAD:release
git checkout --track origin/release
现在,您要删除其他人吗?
git branch -d master
git push origin :master
简单!
如果您遇到GitHub的问题,请执行逐步操作,直到删除远程分支。它不会让你那样做。然后登录到Web界面,然后在存储库上依次单击设置>分支>默认分支。将其更改为新分支,然后执行其余步骤。