Estou tendo esse problema estranho em que clonei um repositório com minhas credenciais ( [email protected]
). Porém 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 desse misterioso mistério?
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
para o correto, continuei recebendo o mesmo erro "Você não pode enviar confirmações 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
No meu caso, havia uma restrição de committer no projeto no GitLab. "Os usuários só podem enviar confirmações para este repositório que foram confirmadas 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 controle remoto não permitia o PUSH.
Você pode encontrar isso em- gitlab-> settings -> Repository -> Push Rules ; apenas desative essa restrição de confirmação e ela funcionará.
Você precisa solicitar a um administrador o repositório do qual você clonou seu projeto para remover as restrições do committer das regras de push em seu repositório. Consulte [Ativando regras de push][1][ https://docs.gitlab.com/ee/push_rules/push_rules.html#enabling-push-rules] .
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 confirmação com o autor impróprio e confirme novamente.Você pode desabilitar as restrições de envio para que não precise passar por todos os commits e alterar o e-mail.