git: обновления были отклонены, потому что удаленный содержит работу, которую вы не имеете локально

Я работаю над командой с несколькими разработчиками, использующими git на BitBucket. Мы все работаем над dev ветка, не толкая к master до релиза.

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

 ! [rejected]        master -> dev (fetch first)
error: failed to push some refs to 'https://myusername@bitbucket.org/repo_user/repo_name.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.

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

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

это команды, которые я запускаю для фиксации, если это кому-то помогает:

git pull remotename master:dev
git add --all
git commit -m "some message"
git pull remotename master:dev
git push remotename master:dev

Я бы подумал, что если бы я сохранил этот порядок, я не получил бы конфликтов слияния. Наверное, я ошибся. Еще раз спасибо

обновление: Я должен добавить, что я искал несколько часов в Google и stackoverflow и следовал различным инструкциям, но я все еще не могу push до dev отделение.

7 ответов


git pull <remote> master:dev получает remote/master филиала и объединить его в свой local/dev филиала.

git pull <remote> dev получает remote/dev ветвь, и объединить его в текущую ветвь.

Я думаю, вы сказали, что конфликтующая фиксация включена remote/dev, так что это ветка, которую вы, вероятно, намеревались получить и объединить.

в этом случае вы фактически не сливали конфликт в свою локальную ветвь, что немного странно, так как вы сказали, что видели неправильный код в своем рабочая копия. Вы можете проверить, что происходит в remote/master.


используйте эту команду в терминал

git push-F origin master


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

git отклоняет обновление

как мы не приняли обновленный пульт дистанционного управления в нашей локальной среде. Так что возьмите тянуть сначала от remote

git pull

он обновит ваш локальный репозиторий и добавит новый . Затем нажмите обновленные изменения удаленный

git push origin master

я исправил это, я не совсем уверен, что я сделал. Я попытался просто толкать и тянуть, используя:

git pull <remote> dev вместо git pull <remote> master:dev

надеюсь, это поможет кому-то, если у них такая же проблема.


У меня была эта ошибка, и это было потому, что на сервере было обновление, но SourceTree не показывал никаких доступных обновлений (возможно, потому, что я был в автономном режиме, когда он последний раз проверял). Поэтому я сделал обновление в дереве источника, и теперь он показывает 2 элемента для нажатия вместо 1 элемента.

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


     Well actually github is much simpler than we think and absolutely it happens whenever we try to **push** even after we explicitly inserted some files in our git repository so, in order to fix the issue simply try..

: git pull

и потом..

: git push

Примечание: Если вы случайно застряли в Редакторе vim после вытягивания репозитория, не волнуйтесь, просто закройте редактор vim и попробуйте нажать:)


вам нужно ввести:

$ git pull
$ git fetch 
$ git merge

Если вы используете git push origin master --force, у вас будет большая проблема.