我如何重命名我的混帐'主'分支'释放'?
我们希望为我们的项目执行一个新的政策,即主分支现在被称为发布分支,以确保分支应该如何使用。 当然,我们也会开发和发布候选分支。
我知道我可以通过简单地使用以下命令在本地重命名主分支:
git branch -m master release
但是,这只是本地的。 即使我把它推到远程,HEAD仍指向远程主分支。 我想彻底摆脱主分支,并在初始克隆时使默认本地分支,释放。
我怎样才能做到这一点?
编辑:看来,因为起源是一个gitorious服务器,我得到错误删除主分支。 我想看看现在是否有可能改变这个,以便默认分支是“释放”。
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
创build您的发布分支并切换到它
git branch release git checkout release
把它推到服务器上
git push origin release
删除服务器上的主分支引用
git push origin :master
删除本地主分支
git branch -d master
理想情况下,你想设置跟踪,所以这样做:
git push origin HEAD:release git checkout --track origin/release
现在,你想删除其他人?
git branch -d master git push origin :master
简单!
正如其他人先前所说的,这里的问题是Gitorious,它不允许你在默认情况下删除HEAD分支。 你有两个select解决这个问题。 一个是login到gitorious服务器(用ssh),find文件服务器上的git-repository,并添加:
[receive] denyDeleteCurrent = warn
到configuration。
更简单的select只是更改默认分支。 在gitorious web界面转到你的仓库,按下“Edit repository”,然后设置“Head在git仓库中将HEAD的符号引用更改为:”。 完成此操作后,您可以删除主分支。
注意:这个答案适用于你有命令行访问的自托pipe的git服务器。
由于试图从客户端删除remote master
确实是不允许的,我假设禁止denyDeleteCurrent
是有道理的,我不想改变这种设置。
不过,我发现, 如果你有命令行访问远程服务器 ,重命名你的主机最简单的方法就是直接在远程运行rename命令。
这对我工作:
- 通过SSHlogin到远程git服务器
- 转到您的项目的xxx.git文件夹
- 运行:
git branch -m master release
现在远程仓库使用release
因为它是默认分支,任何客户端的仓库上的任何git clone
默认都会检出发行版分支。
在build立一个裸存储库来configuration它以满足您的需求之后,这也非常有帮助。