【发布时间】:2011-04-29 13:49:00
【问题描述】:
有一个远程 git bare repo,我从一台机器上推送了一个分支,然后拉到另一台机器上。
在另一台机器上进行了一些更改,尝试将这些更改推送回远程裸仓库,我收到“receive.denyCurrentBranch”错误。
发生了什么事?
这不应该发生在裸回购上 - 没有任何检查。
从机器 2 看到的分支是:
Fix
dev1
dev2
remotes/origin/HEAD -> origin/dev1
remotes/origin/Fix
remotes/origin/dev1
remotes/origin/dev2
remotes/origin/master
'Fix' 是两台开发机器上的当前分支。
当我最初在机器 2 上拉出那个分支时,我做了:
git pull
git checkout -b Fix origin/Fix
我怀疑第一条“远程”行 - 似乎 HEAD 应该指向我当前的分支,但事实并非如此。觉得我错过了什么,在这里..
更新 1 我将 'Fix' 分支合并到 dev1 分支,然后推送 'dev1' 分支 - 工作正常(反正我正要这样做)。
所以,这是一种解决方法,但我认为真正的问题是 HEAD 没有绑定到当前分支('Fix'),而是绑定到非活动分支('dev1')。我不知道如何在远程 repo 上更改 head?
【问题讨论】:
-
如果我错了,请有人纠正我,但是裸存储库甚至不应该有 HEAD。这表明有一个工作目录,并且 HEAD 指向它所基于的提交......你确定远程仓库是裸露的吗?
-
相当肯定。没有签出的项目,所有的 'git' 文件都在存储库的顶级目录中。
-
Jonathan,一个裸 Git 存储库确实有一个 HEAD,但没有默认工作区。裸存储库仍然可以存在工作区,但您必须使用环境变量
GIT_WORK_TREE或 Git 选项--work-tree通知 Git 它存在的位置,并使用环境变量GIT_DIR或选项--git-dir通知存储库的位置。跨度> -
是不是已经有一个
fix/whatever分支,而这与在源上创建fix分支有冲突?
标签: git push git-push git-bare