Разрешения для .git / для каждого рабочего каталога - PullRequest
0 голосов
/ 03 августа 2011

Я получаю эту ошибку каждый раз, когда делаю git push.Только для этого рабочего каталога.Не в другом подобном, где, как я могу сказать, имеет те же разрешения.

$ git push
Counting objects: 15, done.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (8/8), 683 bytes, done.
Total 8 (delta 5), reused 0 (delta 0)
remote: Sending mail...
To git@devel.site.com:mysite.git
dd36358..86bc572  redesign -> redesign
! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@devel.site.com:mysite.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

Это проблема с разрешениями?git pull, кажется, работает нормально, и git push, кажется, тоже проходит, но я все еще получаю ошибку.

Есть идеи?

Ответы [ 3 ]

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

Это не проблема с разрешениями;см. сообщение об ошибке:

ошибка: не удалось отправить некоторые ссылки на «git@devel.site.com: mysite.git». Чтобы предотвратить потерю истории, обновления без ускоренной перемотки были отклоненыОбъедините удаленные изменения (например, «git pull») перед повторным нажатием.Подробности смотрите в разделе «Примечание о ускоренной перемотке» в «git push --help».

Раздел «Примечание о ускоренной перемотке» в git push --help содержит подробное описание проблемы., но вкратце;ветвь, к которой вы переходите, не является прямым предком вашей текущей ветви, поэтому удаленный сервер не позволит вам продвинуться.Вам нужно исправить локальные изменения (например, git pull, чтобы получить пропущенные изменения, или git rebase, чтобы перенести ваши изменения на удаленную головку), или заставить удаленный сервер принять push с помощью --force (последняяпочти никогда не правильный ход)

0 голосов
/ 13 сентября 2011

Если это все еще проблема, если вы делаете git push, вы продвигаете все свои ветви, а не только текущую.

Однако

git pull НЕ является прямой противоположностью git push. Это точно так же, как выполнение следующих команд:

git fetch
git merge origin/thecurrentbranch

То есть git pull объединяет только рабочую ветвь. Он НЕ объединяет никакие другие ветви.

Если git pull выглядит чистым, но вы все еще не можете нажать, это означает, что одна из ваших других веток устарела, и это то, на что жалуется git.

Решение состоит в том, чтобы только подтолкнуть вашу текущую ветку:

git push origin thecurrentbranch

Обратите внимание, что я предполагаю, что thecurrentbranch - это имя вашей активной ветки, а origin - это ваше хранилище в восходящем потоке.

РЕДАКТИРОВАТЬ: внимательный взгляд на ваш оригинальный вопрос является просветляющим:

dd36358..86bc572  redesign -> redesign
! [rejected]        master -> master (non-fast-forward)

Вы, вероятно, redesign извлекли, и это то, что git pull работает. Однако git отклоняет ветку master. Итак, чтобы решить эту конкретную проблему, либо нажмите redesign явно, либо сделайте следующее:

git checkout master
git merge origin/master
git push
0 голосов
/ 03 августа 2011

гм

Merge the remote changes (e.g. 'git pull') before pushing again.

Это действительно не выглядит как проблема с разрешениями для меня.

...