git: обновления были отклонены, поскольку удаленный элемент содержит работу, которую вы не используете локально
Я работаю над командой с несколькими разработчиками, использующими git на BitBucket. Мы все работаем над веткой dev
, а не нажимаем на master
до выпуска.
Один из разработчиков совершил неправильный код, который случайно заменил меня, и теперь я пытаюсь вернуть правильный код обратно в репо. Я читал эту ошибку в течение нескольких дней, я больше не могу нажать на репо, потому что получаю следующую ошибку:
! [rejected] master -> dev (fetch first)
error: failed to push some refs to 'https://[email protected]/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
.
Ответы
Ответ 1
git pull <remote> master:dev
будет извлекать ветвь remote/master
и объединить ее в local/dev
ветвь local/dev
.
git pull <remote> dev
будет извлекать ветвь remote/dev
и объединить ее в вашу текущую ветку.
Я думаю, вы сказали, что конфликтная фиксация находится на remote/dev
, так что это ветка, которую вы, вероятно, намеревались извлечь и слить.
В этом случае вы фактически не сливали конфликт в свою локальную ветку, что довольно странно, поскольку вы сказали, что видите неправильный код в своей рабочей копии. Возможно, вы захотите проверить, что происходит в remote/master
.
Ответ 2
Используйте эту команду в терминальной
git push -f оригинал
Ответ 3
Это происходит, когда мы пытаемся нажать на удаленный репозиторий, но создали новый файл на удаленном компьютере, который еще не был вытащен, скажем, Readme
. В этом случае, как говорится в ошибке
git отклоняет обновление
поскольку мы не использовали обновленный удаленный доступ в нашей локальной среде. Итак, возьмите сначала с дистанции
git pull
Он обновит ваш локальный репозиторий и добавит новый файл Readme
. Затем нажмите обновленные изменения на удаленный
git push origin master
Ответ 4
Я исправил это, я не совсем уверен, что я сделал. Я попробовал просто нажать и потянуть, используя:
git pull <remote> dev
вместо git pull <remote> master:dev
Надеюсь, это поможет кому-то, если у них будет такая же проблема.
Ответ 5
Ну на самом деле GitHub гораздо проще, чем мы думаем, и абсолютно это происходит всякий раз, когда мы пытаемся нажать даже после того, как мы явно вставлены некоторые файлы в нашем мерзавца хранилище так, чтобы исправить этот вопрос просто попробовать..
: git pull
а потом..
: git push
Примечание: если вы случайно застряли в редакторе vim после извлечения хранилища, не беспокойтесь, просто закройте редактор vim и попробуйте нажать :)
Ответ 6
У меня была эта ошибка, и это произошло потому, что на сервере было обновление, но SourceTree не показывал никаких доступных обновлений (возможно, потому, что я был в отключенном состоянии, когда он последний раз проверял). Таким образом, я сделал обновление в исходном дереве, и теперь он показывает 2 элемента, чтобы нажать вместо 1 элемента.
Поэтому не забудьте нажать " Обновить" или " Потянуть", если вы получите эту ошибку, а затем повторите попытку.
Ответ 7
Вам нужно ввести:
$ git pull
$ git fetch
$ git merge
Если вы используете git push origin master --force
источник git push origin master --force
, у вас будет большая проблема.
Ответ 8
Заставить толкать
git push -f мастер оригинала
Ответ 9
Обычно это происходит, когда репо содержит некоторые элементы, которых там нет. Таким образом, чтобы подтолкнуть наши изменения, в этом случае нам нужно интегрировать удаленные изменения, а затем нажать.
Так что создайте тягу с пульта
git pull origin master
Затем нажмите изменения на этом пульте
git push origin master
Ответ 10
У меня был проект SSDT VS первым. Я хотел подтолкнуть проект, как у меня был на Github. Я хотел, чтобы этот толчок был начальной версией моего репо, запускающего основную ветку. Дональское предложение мастера происхождения git push -f было самым простым способом (который я видел) для достижения этой цели. Поскольку мне не пришлось беспокоиться о переписывании чего-либо, это имело смысл.
Ответ 11
Вы можете попробовать это: git pull origin master --rebase