我很确定之前已经问过这个问题,但我似乎找不到它。很抱歉,如果它是一个dublicate。
我有一个裸存储库,我们可以将其称为project_x.git,如果我们检查它所说的配置文件
[core]
repositoryformatversion = 0
filemode = false
bare = true
symlinks = false
ignorecase = true
hideDotFiles = dotGitOnly
所以它肯定是正确的,裸=真。现在我正在尝试用清理版替换master。
$ git push origin :master
remote: Updating references: 100% (1/1)
To http://gitrepo.local/git/project_x.git
! [remote rejected] master (branch is currently checked out)
error: failed to push some refs to 'http://gitrepo.local/git/project_x.git'
我正在使用gitblit btw,这不是实际的服务器URL。
这个回应让我感到困惑,我怎样才能在我的裸仓库上设立一个结账分支?谁在那个分支上工作:),没有任何意义。要么它不是一些配置明智或gitblit与我搞乱。我不明白?
有什么问题?
如果我尝试
git push -f ,
编辑:这有效但你不能像我之前尝试的那样删除分支。
由于
答案 0 :(得分:6)
在裸仓库上设置了一个HEAD,它实际指向在没有参数的情况下运行git clone <url>
时检出的分支。
据我所知你无法删除远程HEAD分支,所以如果要删除master,你必须推送第二个分支,将HEAD移动到该分支,然后在master中推送一个空分支: / p>
本地:
git branch mybranch
git push origin mybranch
on bare-repo:
git symbolic-ref HEAD refs/heads/mybranch
本地:
git push origin :master
当然,如果需要,你可以推送另一个你调用master
的分支,并将HEAD移回它。
git push origin newbranch:master
git symbolic-ref HEAD refs/heads/master #(on bare repo)
答案 1 :(得分:0)
似乎您的本地存储库正在跟踪远程源/主分支。你有当地的主人检查。
git push origin :master
...表示您正在删除远程跟踪分支,但是当您在本地签出相同时,该分支将失败。我认为你必须签出另一个本地分支来删除远程分支。
如果你想用远程裸存储库“重新开始”,我会做(在远程仓库上)一个新的
git init --bare
...然后将您的本地主服务器推送到该服务器,然后将其设置为上游。
git push origin master -u