Ошибка git failed to push some refs ...Updates were rejected because a pushed branch tip is behind its remote + non-fast-forward

ВНИМАНИЕ: не делайте в этой теме резких движений! Есть риск потерять данные.

git error: failed to push some refs to
git Updates were rejected because a pushed branch tip is behind its remote

Вообще речь идёт об ошибке вида:

To ....git
 ! [rejected]        branch1 -> branch1 (non-fast-forward)
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to '...git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and 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.

Предположим, что вы находитесь в ветке branch0.

Такая ошибка может возникать в ответ на

git push

-- то есть на попытку отправить изменения на удалённый сервер.

Вы делаете:

git pull

но проблема с git push всё равно сохраняется.

Причина

Проблема в том, что ваш git push пытается отправить на удалённый сервер не только текущую ветку branch0, но и всё ветки в которых произошли изменения на вашей машине, при этом в удалённом репозитории имеют коммиты более поздних изменений от других разработчиков -- о чем и собственно и сообщает на git, не давая сделать push в эти ветки.

Решение (безопасное для описанное ситуации)

Если написано, что:

Updates were rejected because a pushed branch tip is behind its remote

То это значит, что какие-то из ваших веток не обновлены, в моё случае это 2 ветки (см .сообщение выше):

branch1
master

Далее в качестве решения есть два пути:

  1. переключиться во все эти "устаревшие" ветки и сделать
    git pull

    -- но лучше другой способ:

  2. настроить push на отправку только текущей ветки и просто сделать снова:
    git push