我正在尝试推送到服务器上由gitosis管理的git存储库。当我推,我得到这个错误:
william@utapau:~/lyre$ git push
Enter passphrase for key '/home/william/.ssh/id_dsa':
Counting objects: 9, done.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 705 bytes, done.
Total 5 (delta 4), reused 0 (delta 0)
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To r:lyre
! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'r:lyre'
我发现了这个问题:
Git push error '[remote rejected] master -> master (branch is currently checked out)'
并在那里尝试了答案,没有运气。远程存储库没有.git
文件夹,因为它是使用gitosis设置的。那里不应该有工作树或签出分支。
存储库文件夹结构如下所示:
william@sirius:/home/git/repositories/lyre.git$ ls -hal
total 40K
drwxr-xr-x 7 git users 4.0K May 24 12:58 .
drwxr-xr-x 5 git users 4.0K May 4 2011 ..
drwxr-xr-x 2 git users 4.0K May 4 2011 branches
-rw-rw-r-- 1 git users 66 May 24 12:58 config
-rw-r--r-- 1 git users 73 May 4 2011 description
-rw-r--r-- 1 git users 23 May 4 2011 HEAD
drwxr-xr-x 2 git users 4.0K May 4 2011 hooks
drwxr-xr-x 2 git users 4.0K May 4 2011 info
drwxr-xr-x 163 git users 4.0K Apr 26 15:26 objects
drwxr-xr-x 4 git users 4.0K May 4 2011 refs
william@sirius:/home/git/repositories/lyre.git$ cd branches/
william@sirius:/home/git/repositories/lyre.git/branches$ ls -hal
total 8.0K
drwxr-xr-x 2 git users 4.0K May 4 2011 .
drwxr-xr-x 7 git users 4.0K May 24 12:58 ..
如何摆脱这种混乱并推送到存储库?
答案 0 :(得分:1)
PEBCAK。事实证明我没有克隆我认为克隆的存储库。我试图推送到非裸存储库。
在远程服务器上,gitosis存储库位于/home/git/repositories/lyre.git/
,我还有/home/william/lyre/
的克隆。
在我的本地工作站上,我设置了~/.ssh/config
,如下所示:
host r
user william
当我克隆存储库时,我使用git clone r:lyre
完成了它并且无意中克隆了克隆而不是gitosis repo。当我试图推动时,我确实推动了一个非裸露的回购。
我将~/.ssh/config
更改为:
host r
user git
我的所有问题都消失了。这完全是一个错误的身份。