Gostaria de mudar meu nome, sobrenome e e-mail em todos os meus commits, é possível?
git
git-filter-branch
Joshua
fonte
fonte
Respostas:
Use
git-filter-branch
.Isso afeta apenas o autor, não o autor (que para a maioria dos commits será o mesmo que o autor). Se você deseja reescrevê-las, defina as variáveis
GIT_COMMITTER_NAME
eGIT_COMMITTER_EMAIL
.O aviso padrão sobre reescrever o histórico se aplica; apenas faça isso para a história que ainda não foi compartilhada.
Atualização de junho de 2018
O manual agora inclui uma solução, usando
--env-filter
, em seus exemplos: https://git-scm.com/docs/git-filter-branch#_examples :fonte
msysgit
, ainda tem acessobash
. Caso contrário, eu não tenho idéia.Para reescrever o autor e o commiter em todos os commits selecionados:
fonte
git push --all origin --force
Se não houver outros autores, você poderá:
fonte
Salve o script abaixo como por exemplo
~/.bin/git-replace-author
e execute-o usando, por exemplo:Sem argumentos, ele atualiza todos os commits com seu nome para usar seu endereço de email atual de acordo com a configuração do Git.
Raw (para download)
fonte
~/.bin/
precisa estar dentro dos usuários$PATH
e as necessidades de arquivo para ser executável, então execute:chmod +x ~/.bin/git-replace-author
.Somente se você não tiver enviado seus commits ao mundo. Por outro lado, todo mundo tem seu nome antigo em seu repositório, o que é improvável que você possa mudar o nome de todos.
fonte
Com o Git 2.24 (quarto trimestre de 2019),
git filter-branch
(e BFG) está obsoleto .O equivalente seria, using
newren/git-filter-repo
, e sua seção de exemplo :com
my-mailmap
:Isso substituiria o nome do autor e o email de qualquer confirmação feita por qualquer pessoa com
<[email protected]>
Consulte a
git shortlog
seção de autor de mapeamento para obter a sintaxe exata defonte