Confirmei várias confirmações em um projeto no Github, mas percebi que não havia configurado o nome completo do e-mail e do committer no computador que estou usando atualmente para fazer minhas confirmações e, portanto, o avatar e o endereço de email dos usuários. não estão lá.
Como posso reescrever todos os emails e nomes de usuários confirmados no passado?
Respostas:
Você pode adicionar este alias:
Para alterar o nome do autor:
ou o email apenas dos últimos 10 confirmados:
Alias:
Fonte: https://github.com/brauliobo/gitconfig/blob/master/configs/.gitconfig
fonte
git change-commits GIT_COMMITTER_EMAIL "[email protected]" "[email protected]"
para alterar o email do committer.change-commits = "!f() { VAR1=$1; VAR='$'$1; OLD=$2; NEW=$3; echo \"Are you sure for replace $VAR $OLD => $NEW ?(Y/N)\";read OK;if [ \"$OK\" = 'Y' ] ; then shift 3; git filter-branch --env-filter \"if [ \\\"${VAR}\\\" = '$OLD' ]; then export $VAR1='$NEW';echo 'to $NEW'; fi\" $@; fi;}; f "
Cannot create a new backup. A previous backup already exists in refs/original/
Veja aqui :
fonte
Se você já enviou algumas de suas confirmações para o repositório público, não deseja fazer isso ou criaria uma versão alternativa do histórico do mestre que outras pessoas possam ter usado. "Não atravesse as correntes ... Seria ruim ..."
Dito isto, se foram apenas os commits que você fez no seu repositório local, corrija isso de qualquer maneira antes de enviar para o servidor. Você pode usar o
git filter-branch
comando com a--commit-filter
opção, para que apenas edite confirmações que correspondam às suas informações incorretas, assim:fonte
git update-ref -d refs/original/refs/heads/master
, consulte < stackoverflow.com/a/7654880/333403 >.A previous backup already exists in refs/original/
Nesse caso, execute-o novamente com o novo email e adicione um-f
antes do --commit-filter. Use a seu próprio critério. Geralmente-f
é algo perigoso de se fazer sem o conhecimento do que está fazendo.Depois de aplicar a resposta de Olivier Verdier:
... para enviar o histórico alterado no repositório original, use:
O comando acima (observe o sinal de mais) força a reescrita do histórico no repositório original também. Use com cuidado!
fonte
https://help.github.com/articles/changing-author-info/
isso funcionou totalmente para mim. Após o git push, verifique a atualização no portal da web do git. Se o commit ainda não estava vinculado à minha conta, mostrava uma imagem em miniatura padrão ao lado do commit e não era refletida no gráfico de linha do tempo das minhas contribuições, vá para o URL do commit e anexe .patch no final do URL e verifique o nome e email estão corretos.
fonte
Para aqueles que querem apenas a versão fácil de copiar e colar (além de atualizar e-mails e nomes):
fonte
Considerando que o uso de não
git-filter-branch
é desejado , faça o mesmo no git-filter-repo (pode ser necessário instalá-lo primeiropip install git-filter-repo
):Se o repositório for original, sem controle remoto, você precisará adicionar
--force
para forçar a reescrita. (Você pode criar um backup do seu repositório antes de fazer isso.)Se você não deseja preservar as referências (elas serão exibidas no histórico da ramificação da Git GUI), será necessário adicionar
--replace-refs delete-no-add
.Para recursos mais avançados, consulte "Filtragem de nomes e e-mails" .
PS Roubado e aprimorado em https://stackoverflow.com/a/59591928/714907 .
fonte