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
.
это происходит, когда мы пытаемся нажать на удаленный репозиторий, но создал новый файл на удаленном, который еще не вытащил, скажем 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
, у вас будет большая проблема.