Git отклонено нажатие без перемотки вперед

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

Итак, теперь я пошел в папку своего проекта, долгое время работал и, наконец, сделал:

git add -A && git commit -m "modified code" && git push origin master

.. это то, что я обычно делаю.

и я получаю:

To https://[email protected]/johnsproject/proj.git
! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://[email protected]/johnsproject/proj.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.

Я просмотрел несколько вопросов SO, где они предлагают использовать флаг силы -f - но я не уверен, что я должен это делать.

p.s: Я на ведущей ветке - это ветвь only в моем репо.

Было бы очень полезно, если бы кто-нибудь мог указать мне в правильном направлении здесь.

Спасибо.

Ответ 1

В центральном репозитории есть изменения, которые вы должны вытащить, прежде чем вы сможете нажать. Сделайте

git add -A
git commit -m "my local changes" 
git pull

Разрешить любые конфликты. Тогда do

git push

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

git clone https://[email protected]/johnsproject/proj.git new_repo_dir

Ответ 2

Попробуйте сделать

git pull origin master
git add -A
git commit -m "modified code"
git push origin master

Возможно, ваш локальный репозиторий не синхронизирован с удаленным репозиторием.

Ответ 3

У меня была та же проблема. Я исправил с помощью команды git push -f, которая принудительно обновляет.

Ответ 4

работает для меня git push --set-upstream origin master -f

Ответ 5

в моем случае новый файл из репозитория git не был добавлен, и это было решением 1. git status (только для проверки) 2. git add. 3. git push -u мастер происхождения