Git裸存储库已检出主分支?

时间:2013-03-01 12:16:03

标签: git git-remote git-bare git-config

我很确定之前已经问过这个问题,但我似乎找不到它。很抱歉,如果它是一个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 , 

编辑:这有效但你不能像我之前尝试的那样删除分支。

由于

2 个答案:

答案 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