Как решить эту ошибку git - PullRequest
0 голосов
/ 30 ноября 2011

по электронной почте Ой! Пожалуйста, прости ошибку. Я смешал яблоки и апельсины (два разных проекта). Спасибо за ответы. Они не пропали даром.

Моя цель при задании этого вопроса - я пытаюсь взять каталог для разработки и перенести его на сервер, с которого я буду обновлять его в будущем, используя git commit.

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

Я выполнил инструкции по инициализации удаленного каталога.

Когда я выполняю команду git push origin master из локального каталога, я получаю эти ошибки.

amr@h2oamr:~/bin$ git push origin master
cvsuser@h2oamr's password: 
To cvsuser@h2oamr:/home/cvsuser/master_source_repository_git/ics/addr_verify_clj.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'cvsuser@h2oamr:/home/cvsuser/master_source_repository_git/ics/addr_verify_clj.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.

Ответы [ 3 ]

1 голос
/ 30 ноября 2011

В зависимости от того, что вы действительно хотите сделать, у вас есть два других варианта помимо того, что уже было предложено:

  1. git fetch, чтобы обновить состояние удаленной ветви без автоматическогообъедините

  2. git push -f или git push --force, чтобы перенести локальную ветвь в удаленную ветвь и перезаписать ее существующий заголовок независимо от последствий (даже если ваша локальная ветвь устарела по сравнению с ней)

Обычно я делаю 1, прежде чем решить, стоит ли делать 2.

0 голосов
/ 30 ноября 2011

Это происходит, когда вы пытаетесь перейти к удаленному репо, когда ваше представление об этом репо устарело. Кто-то еще подтолкнул к этому репо, и взгляд вашего локального мерзавца на этот репо является коммитом (или немногими). Так что для этого потребуется git, чтобы объединить ваши изменения с удаленным репо. Git не хочет этого делать, потому что это лучше делать человеку.

Итак, мерзавец говорит тебе сделать тягу. Это обновит ваше локальное представление об удаленном репо, что позволит вам аккуратно вставить в него ваши изменения. Это, вероятно, потребует от вас слияния, которое представляет собой ручной / ориентированный на человека процесс. Git был разработан для того, чтобы гарантировать, что ручные / человеческие вещи делаются людьми.

TL; DR: сделать git pull, объединить изменения, если необходимо, затем нажать еще раз. Как в сообщении об ошибке написано

0 голосов
/ 30 ноября 2011

Сначала вам нужно сделать git pull, чтобы получить последние изменения из удаленного репозитория.Это выполнит автоматическое слияние (и после разрешения возможных конфликтов), и вы сможете отправить свой код обратно на пульт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...