我使用gitolite进行git访问权限管理。
我想将master分支重命名为production。
我在gitolite的回购中有RW + permision
我将分支localy重命名为:
git branch -m master production
然后我想要远程主分支,但我得到:
remote: error: By default, deleting the current branch is denied, because the next
remote: error: 'git clone' won't result in any file checked out, causing confusion.
remote: error:
remote: error: You can set 'receive.denyDeleteCurrent' configuration variable to
remote: error: 'warn' or 'ignore' in the remote repository to allow deleting the
remote: error: current branch, with or without a warning message.
remote: error:
remote: error: To squelch this message, you can set it to 'refuse'.
remote: error: refusing to delete the current branch: refs/heads/master
To gitolite@virgo:/puppeteer
! [remote rejected] master (deletion of the current branch prohibited)
如何在远程上删除主分支?
答案 0 :(得分:1)
问题是为什么要删除主分支。创建新分支并将新分支推送到远程服务器更容易。
git checkout master
git branch production
git checkout production
git push origin production
然后你有一个新的远程分支。
答案 1 :(得分:0)
我意识到这个问题已有6年了,但是答案是,您不希望在不告知git服务器的情况下删除默认分支,如果将来有人克隆该分支时该使用什么。
在此answer中引用了关于乙醇钠的说明。
请注意,您需要启用symbolic-ref
命令才能通过将其添加到服务器上.gitolite.rc
用户的git
文件中的命令列表中来远程执行此命令。
启用后,您应该可以运行
ssh <gituser@yourserver> symbolic-ref puppeteer HEAD refs/head/production
更改默认分支,然后您应该能够删除旧的master
分支。
答案 2 :(得分:0)
我无法对 gaige 的回答发表评论,因此我将其添加为答案,但我必须使用 refs/heads/production
(注意 s
中的 heads
),因为那是我的 Git 存储库中引用的路径。由 gaige 链接的 another answer 下方也有 heads
,当前的 Git documentation 也使用 heads
。