Git push отклонил "non-fast-forward"


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

git checkout --ours filename.txt
git add filename.txt
git rebase --continue

теперь я хочу нажать мои изменения, и поэтому запускаю следующую команду

$ git push origin feature/my_feature_branch

дает мне следующую ошибку:

To ssh://git@coderepo.com:7999/repo/myproject.git
 ! [rejected]        feature/my_feature_branch -> feature/my_feature_branch (non-fast-forward)
error: failed to push some refs to 'ssh://git@coderepo.com:7999/repo/myproject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

что я могу сделать, чтобы избавиться от ошибки?

П. С. : Я избегаю использовать как можно больше.

8   51   2013-12-09 13:26:54

8 ответов:

похоже, что кто-то нажал новые коммиты между вашими последними git fetch и git push. В этом случае вам нужно повторить ваши шаги и перебазировать my_feature_branch еще раз.

git fetch
git rebase feature/my_feature_branch
git push origin feature/my_feature_branch

после git fetch рекомендую изучить ситуацию с gitk --all.

Вероятно, вы не извлекли удаленные изменения до перебазирования или кто-то нажал новые изменения (в то время как вы перебазировали и пытались нажать). Попробуйте выполнить следующие действия:

#fetching remote 'feature/my_feature_branch' branch to the 'tmp' local branch 
git fetch origin feature/my_feature_branch:tmp

#rebasing on local 'tmp' branch
git rebase tmp

#pushing local changes to the remote
git push origin HEAD:feature/my_feature_branch

#removing temporary created 'tmp' branch
git branch -D tmp

У меня была эта проблема! Я пробовал: git fetch + git merge, но не решен! Я пробовал: ГИТ тянуть, а также не решается

затем я попробовал это и решил свою проблему (аналогично ответу инженера):

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

У меня была аналогичная проблема, и я решил ее с помощью: git pull origin

блокировка записи в общий локальный репозиторий

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

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

 git branch --set-upstream-to=origin/feature/my-current-branch feature/my-current-branch

в Eclipse выполните следующие действия:

Git Repositories > Remotes > Origin > щелкните правой кнопкой мыши и скажите fetch

Git Repositories > Remote Tracking > Выберите свою ветку и скажите merge

перейдите в проект, щелкните правой кнопкой мыши на файле и скажите Fetch from upstream.

Я опоздал на вечеринку, но я нашел некоторые полезные инструкции страница справки github и я хотел бы поделиться ими здесь.

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

если другой человек нажал на ту же ветку, что и вы, Git не сможет нажать ваши изменения:

$ git push origin master
To https://github.com/USERNAME/REPOSITORY.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/USERNAME/REPOSITORY.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.

вы можете исправить это путем извлечения и слияния изменений, внесенных на пульте филиал с изменениями, которые вы сделали локально:

$ git fetch origin
# Fetches updates made to an online repository
$ git merge origin YOUR_BRANCH_NAME
# Merges updates made online with your local work

или, вы можете просто использовать git pull для выполнения обеих команд одновременно:

$ git pull origin YOUR_BRANCH_NAME
# Grabs online updates and merges them with your local work