Подтвердить что ты не робот

! [reject] master → master (сначала выборка)

Есть ли хороший способ объяснить, как разрешить "! [rejected] master -> master (fetch first)'" в Git?

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

! [rejected]        master -> master (fetch first)
error: failed to push some refs to '[email protected]:zapnaa/abcappp.git'
4b9b3361

Ответ 1

Ответ есть, git говорит вам сначала выбрать.

Наверное, кто-то еще запустил мастер, и ваша фиксация позади. Поэтому вам нужно извлечь, объединить набор изменений, а затем снова нажать.

Если вы не сделали (или, что еще хуже, если вы принудительно его используете с помощью опции --force), вы можете испортить историю фиксации.

EDIT: я подробно расскажу о последнем моменте, так как парень тут просто дал очень плохой совет по использованию опции --force.

Поскольку git является DVCS, в идеале многие другие разработчики работают над тем же проектом, что и вы, используя тот же репозиторий (или его вилку). Если вы сильно перепишете свой набор изменений, ваш репозиторий будет не соответствовать другим людям, потому что "вы переписали историю". Вы сделаете других людей несчастными и пострадает репозиторий. Вероятно, котята в мире тоже будут плакать.

TL; DR

  • Если вы хотите решить, сначала выберите (а затем слейте).
  • Если вы хотите взломать, используйте опцию --force.
Тем не менее, вы попросили первого. Идите 1) всегда, даже если вы всегда будете использовать git самостоятельно, потому что это хорошая практика.

Ответ 2

попробуйте:

git fetch origin master
git merge origin master

После написания этого кода я получил другую ошибку: (non-fast-forward)

Я пишу этот код:

git fetch origin master:tmp
git rebase tmp
git push origin HEAD:master
git branch -D tmp

И решил мою проблему

Ответ 3

Вы должны использовать git pull, это команда сделать git fetch, а затем сделать git merge.

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

Ответ 4

pull всегда правильный подход, но единственным исключением может быть, когда вы пытаетесь преобразовать файловую систему none- Git в репозиторий Github. Там вам придется принудительно вставить первый фиксатор.

git init
git add README.md
git add .
git commit -m "first commit"
git remote add origin https://github.com/userName/repoName.git
git push --force origin master

Ответ 5

Попробуйте выполнить эту команду git

git push origin master --force

или меньше силы -f

git push origin master -f

Ответ 6

Вы можете использовать следующую команду: Сначала клонируйте новую копию своего репо, используя флаг -mirror:

$ git clone --mirror git://example.com/some-big-repo.git

Затем выполните следующие коды:

Добавление существующего проекта в GitHub с помощью командной строки

Даже если это не работает, вы можете просто указать:

$ git push origin master --force 

или

$ git push origin master -f

Ответ 7

Вероятно, что кто-то другой (например, ваш коллега) положил фиксацию на origin/master, которые не находятся в вашей локальной ветки master, и вы пытаетесь наложить некоторые коммиты из своей локальной ветки на сервер. В 99% случаев, если вы не хотите стирать свою работу с origin, у вас есть две возможности:

2) Объедините их изменения в свою локальную ветвь, а затем нажмите объединенный результат. git checkout master git pull # resolve conflicts here git push

(Обратите внимание, что git pull по существу является просто a git fetch и a git merge в этом случае.)

1) Восстановите свою локальную ветку, чтобы она выглядела так, как будто ваш коллега сделал свои коммиты первым, а затем сделал свои коммиты. Это сохраняет историю фиксации приятной и линейной - и позволяет избежать "слияния". Однако, если у вас возникли конфликты с изменениями ваших коллег, вам может понадобиться разрешить эти конфликты для каждого из ваших коммитов (а не только один раз) в худшем случае. По сути, это лучше для всех, но больше усилий для вас. git pull --rebase # resolve conflicts here git push

(Заметим, что git pull --rebase есть, по существу, git fetch и a git rebase origin/master.)

Ответ 8

Иногда это происходит, когда вы дублируете файлы, как правило, типа README.

Ответ 9

Ваша ошибка может быть из-за ветки слияния.
Просто следуйте этому:

Шаг 1: git pull origin master (в случае, если вы получаете какое-либо сообщение, игнорируйте его)
шаг 2: git add.
шаг 3: git commit -m 'your commit message'
шаг 4: git push origin master

Ответ 10

эта работа для меня

  1. git init

  2. git add --all

3.git commit -m "name"

4. оригинал толчка происхождения git --force

Ответ 11

Это сработало для меня:

$ git add .
$ git commit -m "commit"
$ git push origin master --force