У меня возникла странная проблема, когда я клонировал репозиторий с моими учетными данными ( [email protected]
). Но я не могу отправить изменения, потому что я всегда получаю это сообщение:
GitLab: You cannot push commits for '[email protected]' . You can only push commits that were committed with one of your own verified emails.
Проблема в том, что когда я проверяю глобальных пользователей и пользователей репозитория, я обнаруживаю следующее [email protected]
:
Глобально (ниже подтверждается мой правильный адрес):
git config --global user.email
git config --global user.name
Репозиторий (ниже подтверждается мой правильный адрес):
git config user.email
git config user.name
Что мне делать и в чем причина этой таинственной загадки?
решение1
Мне удалось исправить ту же проблему с помощью этой команды git:
git commit --amend --reset-author --no-edit
Сначала я попытался выполнить коммит, указав неправильный адрес электронной почты, но даже после установки git config --global
правильных user.name и user.email я продолжал получать ту же ошибку «Вы не можете отправлять коммиты для...», указанную выше.
Решением стало сброс автора в git, после чего push был принят в Gitlab.
Для справки:https://github.com/git-tips/tips#revert-undo-a-commit-by-creating-a-new-commit
решение2
В моем случае в проекте на GitLab было ограничение на коммиттеров. «Пользователи могут отправлять в этот репозиторий только те коммиты, которые были отправлены с одного из их собственных проверенных адресов электронной почты». Поскольку я также настроил SSH на своей машине, мой адрес электронной почты пользователя был обновлен в глобальном файле git с адресом моей машины, следовательно, удаленный доступ не позволял выполнять PUSH.
Вы можете найти это здесь: gitlab-> settings -> Repository -> Push Rules; просто отключите это ограничение на коммиты, и все заработает.
решение3
git commit --amend --reset-author --no-edit
изменяет только автора в последнем коммите. Если у вас несколько коммитов, вы все равно не сможете отправить изменения.
Проверьте его с помощью git log
, сбросьте все коммиты с неправильным автором и повторите коммит.