2

我很确定以前有人问过这个问题,但我似乎没有找到它。很抱歉,如果它是重复的。

我有一个裸存储库,可以将其称为 project_x.git,如果我们检查它说的配置文件

[core]
repositoryformatversion = 0
filemode = false
bare = true
symlinks = false
ignorecase = true
hideDotFiles = dotGitOnly

所以它肯定是正确的,bare = true。现在我正在尝试用清理版本替换 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 顺便说一句,这不是实际的服务器 url。

这个回复让我很困惑,我怎么能在我的裸仓库上有一个结帐分支?谁在那个分支上工作:),没有意义。要么配置明智,要么 gitblit 惹恼了我。我不明白?

怎么了?

顺便说一句,如果我尝试相同的消息

git push -f , 

编辑:这可行,但您不能像我之前尝试的那样删除分支。

谢谢

4

2 回答 2

6

git clone <url>裸 repo 上有一个 HEAD 集,它实际上指向当你不带参数运行时检出的分支。

据我所知,你不能删除远程 HEAD 分支,所以如果你想删除主分支,你必须推送第二个分支,将你的 HEAD 移动到该分支,然后在 master 中推送一个空分支:

本地:

git branch mybranch
git push origin mybranch

在裸回购:

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)
于 2013-03-01T12:27:13.330 回答
0

似乎您的本地存储库正在/正在跟踪远程源/主分支。你已经检查了本地主人。

git push origin :master

... 表示您正在删除远程跟踪分支,但是当您在本地签出相同的分支时会失败。我认为您必须签出另一个本地分支才能删除远程分支。

如果您想使用远程裸存储库“重新开始”,我会(在远程存储库上)做一个新的

git init --bare

...然后将您的本地主机推送到该位置,然后将其设置为上游。

git push origin master -u
于 2013-03-01T12:27:28.987 回答