Estou tendo um problema estranho em que clonei um repositório com minhas credenciais ( [email protected]
). Mas não consigo fazer push das alterações pois sempre recebo esta mensagem:
GitLab: You cannot push commits for '[email protected]' . You can only push commits that were committed with one of your own verified emails.
O problema é que quando verifico os usuários globais e do repositório, descubro que é [email protected]
:
Global (abaixo confirma meu endereço correto):
git config --global user.email
git config --global user.name
Repositório (abaixo confirma meu endereço correto):
git config user.email
git config user.name
O que devo fazer e qual é a razão por trás deste mistério misterioso?
Responder1
Consegui corrigir o mesmo problema usando este comando git:
git commit --amend --reset-author --no-edit
Inicialmente tentei confirmar com o e-mail errado, mas mesmo depois de definir user.name e user.email git config --global
como o correto, continuei recebendo o mesmo erro "Você não pode enviar commits para ..." acima.
A solução foi redefinir o autor no git - então o push foi aceito no Gitlab.
Para referência:https://github.com/git-tips/tips#revert-undo-a-commit-by-creating-a-new-commit
Responder2
No meu caso, houve uma restrição de committer no projeto no GitLab. "Os usuários só podem enviar commits para este repositório que foram confirmados com um de seus próprios e-mails verificados." Como configurei o SSH também com minha máquina, meu e-mail de usuário foi atualizado no arquivo git global com o endereço da minha máquina, portanto o remoto não estava permitindo PUSH.
Você pode encontrar isso em- gitlab-> settings -> Repository -> Push Rules ; apenas desabilite esta restrição de commit e ela funcionará.
Responder3
git commit --amend --reset-author --no-edit
apenas altera o autor no último commit, se você tiver vários commits, ainda não poderá fazer push.
Verifique com git log
e redefina cada commit com o autor impróprio e confirme novamente.