Git push to refs/глав / мастер не работает на моем Mac, как это исправить?

Я на Mac OS X, включен SSH. Я пытался подтолкнуть локальные изменения к удаленному репо. Я имитировал удаленное репо локально так: Создать удаленное репо

$cd ~/learn
$mkdir gittest
$cd gittest/
$git init
$git config --global user.name "username"
$git config --global user.email "useremail"
$touch readme
$git add readme
$git commit -m "empty"

ОК, все хорошо, затем в другой каталог я сделал:

$cd ~/learn/client
$git clone trosky@localhost:/Users/trosky/learn/gittest
$cd gittest
$vi readme(add one line)
$git add .
$git commit -m "add line"
$git push origin master:refs/heads/master

Это не удалось, и Git говорит:

$git push origin master:refs/heads/master
Total 0 (delta 0), 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 x@localhost:/Users/trosky/gittest
 ! [remote rejected] master -> master (branch is currently checked out)
 error: failed to push some refs to 'x@localhost:/Users/trosky/learn/gittest'

Означает ли это, что у удаленного репо или на стороне локального клиента есть проблемы? Как это исправить?

2 ответа

Решение

Сообщение об ошибке говорит вам, что (удаленный компьютер, к которому вы пытаетесь подключиться, не является пустым репозиторием, и фактически...) ветвь, к которой вы пытаетесь подключиться, извлечена в этом хранилище. По умолчанию не разрешено выполнять пуш в непроигрышном репо и не разрешается пуш в извлеченную ветку. Но вы можете настроить удаленную систему, чтобы сделать это, сделав git config изменения в удаленной системе, которые выдает сообщение об ошибке.

Я подозреваю, что если бы вы прогуглили сообщение об ошибке, вы бы нашли много существующих сайтов, дающих такой же ответ.

Я получал ту же ошибку, решение было простым:

      git push origin HEAD

Я просто последовал предложению из вывода:

      $ git push
fatal: The upstream branch of your current branch does not match
the name of your current branch.  To push to the upstream branch
on the remote, use

    git push origin HEAD:master

To push to the branch of the same name on the remote, use

    git push origin HEAD

To choose either option permanently, see push.default in 'git help config'.
Другие вопросы по тегам