我试图同时删除本地和远程GitLab仓库中的一个分支,它的名字是origin/feat
,我尝试了git push --delete origin feat
,Git抱怨:
remote: error: By default, deleting the current branch is denied, because the next
remote: 'git clone' won't result in any file checked out, causing confusion.
remote:
remote: You can set 'receive.denyDeleteCurrent' configuration variable to
remote: 'warn' or 'ignore' in the remote repository to allow deleting the
remote: current branch, with or without a warning message.
remote:
remote: To squelch this message, you can set it to 'refuse'.
remote: error: refusing to delete the current branch: refs/heads/feat
OK是有道理的,所以我尝试用git checkout master
切换到origin/master
,它告诉我:Already on 'master'
.当前分支是否也需要在远程目录中设置?我该怎么做?
6条答案
按热度按时间n7taea2i1#
试试看
lg40wkob2#
要从计算机中删除本地分支:
要删除远程分支:
在您的情况下,上述语句为:
要从计算机中删除本地分支:
要删除远程分支:
brc7rcf03#
当我想从源文件中删除主文件时,也遇到了同样的问题。
假设您要删除主文件,我通过3个步骤解决了此问题:
1.进入你的仓库的GitLab页面,点击“设置”按钮。
1.在默认分支中,将默认分支从主分支切换到另一个分支。
1.在受保护的分支中,如果有任何保护,请取消对主分支的保护。
然后再次尝试删除分支。
如果它不是您想要删除的主分支,只需按照相同的步骤删除所需的分支。
vyswwuz24#
编辑(根据OP-I的评论,未使用GitLab):GitLab有一个带有下拉菜单的网页界面,你需要在Settings视图下的下拉菜单(不是Project视图)。在Settings视图下的"Default branch"下选择一个分支,然后点击"Save changes"来设置服务器上的当前分支。
详细信息
你的想法是对的,但是你必须记住,有两个存储库--两个Git--参与其中。
任何时候你得到的文本前缀为
remote:
,这意味着文本来自于 * other Git *。所以当你让你的Git请求其他Git删除feat
时,是其他Git在抱怨feat
是当前分支。因此:
是否也需要在远程目录中设置当前分支?
是的(好吧,"而不是"而不是"也")。
我该怎么做?
一般来说,与处理任何存储库的方法相同:登录,
cd
到仓库目录,然后运行git checkout
。但是服务器上的可推送仓库有一两个问题:--bare
仓库,所以不能直接使用git checkout
,这里的技巧是使用git symbolic-ref
更新HEAD
:当然,这是假设你可以登录(见第一点)。如果有,比方说,一个Web界面,让你改变远程上的当前分支,它将不得不为你做这个
git symbolic-ref
操作。zte4gxcn5#
如果你试图删除多个分支,任何受保护的分支(例如默认分支,通常是
master
)都会导致整个请求失败,所以可能尝试一次删除一个,或者排除已知的受保护分支.例如,我尝试删除合并的分支
b1zrtrql6#
删除分支
git分支-D registryDB(一个Git分支名称)
git推送来源:registryDB