我有一个分支的git repo:master。如何在本地和远程仓库上重命名分支?

时间:2013-03-26 05:50:59

标签: git version-control git-branch

我有一个带有单个分支的git仓库:主分支。相反,我希望主分支被称为“somethingelse”,之后我可以添加更多分支与其他名称。我不想要一个名为“master”的分支。

我该怎么做?

1 个答案:

答案 0 :(得分:3)

以下步骤应该有效,假设您的遥控器名称为origin

# Rename local master to somethingelse
git branch -m master somethingelse

# Delete the remote named origin's master
git push origin :master

# Checkout local somethingelse
git checkout somethingelse

# Push the branch somethingelse to remote
git push origin somethingelse

# Update the remote tracking branch for somethingelse
# otherwise the next pull/push might fail
git branch -u origin/somethingelse somethingelse

这些步骤存在很多问题:

  • 现有的结帐不会知道分支重命名
  • 如果遥控器上没有名为git pull的分支,则下一个master会出错。原因是远程服务器上不存在默认分支。要使用我在最后提到的git symbolic-ref命令更新远程服务器上的默认分支。
  • 在较新的git版本中,要删除遥控器上的分支,您需要将receive.denyDeleteCurrent配置为warnignore,否则将无法执行删除操作。如果您无法更改遥控器上的配置,则无法删除遥控器上的分支。虽然您可以将分支主服务器重置为树中的其他位置并执行push -f

更改远程服务器上的默认分支:

您需要有权访问远程服务器以配置将在新克隆上检出的默认分支:

git symbolic-ref HEAD refs/heads/somethingelse