Centos5 Git поделиться папками - PullRequest
0 голосов
/ 04 августа 2011

Я новичок в Git, и у меня проблема у меня есть проблема при отправке данных в моей системе git. я установил git и gitolite, но когда я вызываю: «git push origin master», это выдает мне эту ошибку:

Counting objects: 12, done.
Compressing objects: 100% (9/9), done.
Writing objects: 100% (12/12), 1.47 KiB, done.
Total 12 (delta 1), reused 5 (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 gitolite@server.nl:gitolite-admin
 ! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'gitolite@server.nl:gitolite-admin'

Я следовал этому уроку по установке gitolite: gitolink все работало как надо, но на самом последнем шаге. Когда я выполняю команду, я, к сожалению, получаю эту ошибку

Может кто-нибудь сказать мне, что делать или как это исправить? уже пробовал git config --bool core.bare true изменение ветви (чтобы она (мастер) не использовалась)

1 Ответ

0 голосов
/ 05 августа 2011

Основная проблема заключается в том, что вы пытаетесь перейти в «пустой» репозиторий git. Хотя это возможно, многие документы и книги не дают понять, что это не рекомендуется.

Таким образом, в то время как git является децентрализованным scm-сервером с несколькими мастерами, на практике вы имеете в виду «мастер» или «центральные» репозитории, которые вы клонируете из и нажимаете до и служат в качестве «канонического» репо, и рабочих репо (например, на вашем ноутбуке), которые вы клонировали из «мастера», которого вы вытягиваете в и толкаете из . Эти «главные» репозитории должны быть созданы с помощью --bare:

server$ cd ; mkdir git
server$ git clone --bare /home/user/foo /home/user/git/foo.git

Как только вы это сделаете, вы сможете нажать с вашего ноутбука:

laptop$ cd foo
laptop$ git remote -v
laptop$ origin user@server:/home/user/git/foo.git (fetch)
laptop$ origin user@server:/home/user/git/foo.git (push)
laptop$ git push origin master

Вы также можете сделать на сервере:

git config --global receive.denyCurrentBranch "ignore"

Но я бы не стал этого делать, пока вы не поймете, как лучше работает git.

...