如果有一个存储库,我只有git://访问(通常只是推+拉),是否有一种方法重命名该存储库中的分支,以同样的方式,我将在本地用git branch -m?


当前回答

首先签出你想重命名的分支:

git branch -m old_branch new_branch
git push -u origin new_branch

从远程删除一个旧的分支:

git push origin :old_branch

其他回答

除了已经给出的答案,下面是一个版本,它首先检查新分支是否已经存在(因此您可以安全地在脚本中使用它)

if git ls-remote --heads "$remote" \
    | cut -f2 \
    | sed 's:refs/heads/::' \
    | grep -q ^"$newname"$; then
    echo "Error: $newname already exists"
    exit 1
fi
git push "$oldname" "$remote/$oldname:refs/heads/$newname" ":$oldname"

(检查来自这个答案)

如果你在用Github…

你可以使用github.com上的UI创建一个基于旧名称分支的新分支:

你只需要用你想要的名字创建一个新的本地分支,把它推到你的远程,然后删除旧的远程分支:

$ git branch new-branch-name origin/old-branch-name
$ git push origin --set-upstream new-branch-name
$ git push origin :old-branch-name

然后,要查看旧的分支名称,存储库的每个客户端必须执行以下操作:

$ git fetch origin
$ git remote prune origin

注意:如果你的旧分支是你的主分支,你应该改变你的主分支设置。否则,当你运行$ git push origin:old-branch-name时,你会得到错误“禁止删除当前分支”。

当然。只需在本地重命名分支,推送新分支,并推送旧分支的删除。

唯一真正的问题是存储库的其他用户不会重命名本地跟踪分支。

首先签出你想重命名的分支:

git branch -m old_branch new_branch
git push -u origin new_branch

从远程删除一个旧的分支:

git push origin :old_branch