Как исправить ошибку? "error: failed to push some refs"

Рейтинг: 3Ответов: 2Опубликовано: 14.03.2015

Ни с того ни с сего начало выдавать ошибку

$ git -c diff.mnemonicprefix=false -c core.quotepath=false push -v --tags origin master:master
Pushing to https://[name]@bitbucket.org/[teamname]/[projectname].git
To https://[name]@bitbucket.org/[teamname]/[projectname].git
! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://[name]@bitbucket.org/[teamname]/[projectname].git'

hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Ответы

▲ 4

Копирую предложение Etki: в таком случае нужно сделать git pull

the remote contains work that you do not have locally.
You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again.

Это значит:

удаленный репозиторий имеет коммиты, которых нет на локальной машине
вам бы их слить через git pull для начала

▲ 1

Была аналогичная ситуация с пушем на Bitbucket.

Перед этим делал merge c my_branch на master. AndroidStudio предложила пофиксить конфликтные файлы. Как и полагается, открыл вкладку Version Control -> LocalChanges и поисправлял все конфликты в файлах которые были отмечены красным цветом.
Но запушить на origin master так и не получилось.

Попробовал git pull - но результата проблема не решилась.

Вариант того что кто-то запушил код до меня на origin master - исключен, так как с кодом никто кроме меня не работал уже почти год. Так что вариант, что у меня на локалке чего-то не хватает и нужно делать git pull - пришлось отбросить.

Сложно вспомнить на каком этапе я додумался проверить файлы в папке .idea текущего проекта. Но, в файле misc.xml нашелся конфликтный участок типа:

<<<<<<< HEAD  
код из первой ветки
======
код из второй ветки  
>>>>>>> my_branch. 

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