如果有一个存储库,我只有git://访问(通常只是推+拉),是否有一种方法重命名该存储库中的分支,以同样的方式,我将在本地用git branch -m?
当前回答
如果你真的只想远程重命名分支,而不同时重命名任何本地分支,你可以用一个命令来完成:
git push <remote> <remote>/<old_name>:refs/heads/<new_name> :<old_name>
我编写了这个脚本(git-rename-remote-branch),它提供了一个方便的快捷方式来轻松完成上述操作。
作为bash函数:
git-rename-remote-branch() {
if [ $# -ne 3 ]; then
echo "Rationale : Rename a branch on the server without checking it out."
echo "Usage : ${FUNCNAME[0]} <remote> <old name> <new name>"
echo "Example : ${FUNCNAME[0]} origin master release"
return 1
fi
git push $1 $1/$2\:refs/heads/$3 :$2
}
要整合@ksrb的评论:这基本上是在一个命令中进行两次推送,首先git push <remote> <remote>/<old_name>:refs/heads/<new_name>,以基于旧的远程跟踪分支推送一个新的远程分支,然后git push <remote>:<old_name>删除旧的远程分支。
其他回答
当然。只需在本地重命名分支,推送新分支,并推送旧分支的删除。
唯一真正的问题是存储库的其他用户不会重命名本地跟踪分支。
你只需要用你想要的名字创建一个新的本地分支,把它推到你的远程,然后删除旧的远程分支:
$ 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时,你会得到错误“禁止删除当前分支”。
我不知道为什么,但@Sylvain Defresne的答案对我来说不管用。
git branch new-branch-name origin/old-branch-name
git push origin --set-upstream new-branch-name
git push origin :old-branch-name
我必须取消上游的设置,然后我可以再次设置流。以下是我是如何做到的。
git checkout -b new-branch-name
git branch --unset-upstream
git push origin new-branch-name -u
git branch origin :old-branch-name
首先签出你想重命名的分支:
git branch -m old_branch new_branch
git push -u origin new_branch
从远程删除一个旧的分支:
git push origin :old_branch
按照以下步骤更改分支名称:
Git branch -m old_branchname new_branchname Git推送源:old_branchname new_branchname Git push——set-upstream origin new_branchname
之后取回原点
Git获取来源 Git远程删除源文件
推荐文章
- Git rebase—即使所有合并冲突都已解决,仍然会继续报错
- 在Git中,我如何知道我的当前版本是什么?
- 跟踪所有远程git分支作为本地分支
- 自定义SSH端口上的Git
- git如何显示不存在于.gitignore中的未跟踪文件
- Git错误:遇到7个文件应该是指针,但不是
- GitHub克隆与OAuth访问令牌
- 移动(或“撤销”)最后一个git提交到非暂存区域
- 我可以在GitHub上对要点进行拉请求吗?
- Hg:如何做一个像git的rebase
- 如何丢弃远程更改并将文件标记为“已解决”?
- 如何查看远程标签?
- Git:在推送后删除提交的文件
- Git分支之间的视觉差异
- 在GitHub中编辑git提交消息