git push приводит к отказу в разрешении или (ветка в настоящее время проверена) - PullRequest
1 голос
/ 21 июня 2011

Я клонировал удаленный репозиторий и сделал несколько коммитов.Я пытаюсь отправить свои коммиты обратно в репозиторий, чтобы другие разработчики могли получить их.Сначала я попытался: git push "other_serv" my_branch:master, но я получил

remote: error: refusing to update checked out branch: refs/heads/master[K
remote: error: By default, updating the current branch in a non-bare repository[K
remote: error: is denied, because it will make the index and work tree inconsistent[K
remote: error: with what you pushed, and will require 'git reset --hard' to match[K
remote: error: the work tree to HEAD.[K
remote: error: [K
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to[K
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into[K
remote: error: its current branch; however, this is not recommended unless you[K
remote: error: arranged to update its work tree to match what you pushed in some[K
remote: error: other way.[K
remote: error: [K
remote: error: To squelch this message and still keep the default behaviour, set[K  
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.[K
To user@server:/path/to/git
! [remote rejected] my_branch -> master (branch is currently checked out)

Так что я погуглил проблему и на удаленном сервере попытался:

git checkout -b dummy

Затем попытался нажать еще раз, но получил ту же ошибку,Поэтому вместо того, чтобы толкать мастера, я пытался толкать манекена.Затем я получил эту ошибку:

error: Unable to append to ./logs/refs/heads/dummy: Permission denied
To user@server:/path/to/git
 ! [remote rejected] my_branch -> dummy (failed to write)
error: failed to push some refs to 'user@server:/path/to/git'

Так что я искал больше и обнаружил, что у некоторых людей были проблемы с их разрешениями.Поэтому я выполнил chmod'd и chown'd все файлы:

-rw-rw-r-- 1 user git   41 2011-06-20 20:07 dummy
-rw-rw-r-- 1 user git   41 2011-06-19 19:47 master

, и я могу писать как на dummy, так и на master, но я все равно получаю сообщение об ошибке выше.У кого-нибудь есть какие-то решения?Я бился головой об этой, предположительно простой проблеме.

РЕДАКТИРОВАТЬ : Похоже, что нашел основную причину.По какой-то причине мой репозиторий находится в /path/to/repo.git, хотя все команды, которые я использую, указывают на / path / to / repo.Это часть git?

РЕДАКТИРОВАТЬ 2: Оказывается, там была вторая папка с именем ./repo.git.Поскольку папка ./repo была пуста, git искал файлы ./repo.git, а не ./repo.Кажется, что при поиске ./.git, git предпочитает ./repo.git/.git, а не ./repo, когда файлы конфигурации git находятся внутри ./repo

1 Ответ

1 голос
/ 21 июня 2011

При настройке удаленного репозитория лучше всего использовать пустой репозиторий ...

git clone --bare YourRepo/ YourRepo.git
rsync -azv YourRepo.git you@your.server.com:

Теперь клонируйте его по ssh:

git clone ssh://you@your.server.com/~/YourRepo.git
... edit ...
git commit ...
git push origin HEAD

Использование не-пустого хранилища, как сказано в сообщении об ошибке, имеет некоторые проблемы с разрешениями. Пустой репозиторий не имеет ассоциированного рабочего каталога и поэтому свободен от этой сложности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...