我如何重命名我的混帐'主'分支'释放'?

我们希望为我们的项目执行一个新的政策,即主分支现在被称为发布分支,以确保分支应该如何使用。 当然,我们也会开发和发布候选分支。

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

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命令。

这对我工作:

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

现在远程仓库使用release因为它是默认分支,任何客户端的仓库上的任何git clone默认都会检出发行版分支。

在build立一个裸存储库来configuration它以满足您的需求之后,这也非常有帮助。