Me gustaría cambiar mi nombre, apellido y correo electrónico en todas mis confirmaciones, ¿es posible?
git
git-filter-branch
Joshua
fuente
fuente
Respuestas:
Uso
git-filter-branch
.Esto solo afecta al autor, no al committer (que para la mayoría de los commits será el mismo que el autor). Si desea reescribirlos también, configure las variables
GIT_COMMITTER_NAME
yGIT_COMMITTER_EMAIL
.Se aplica la advertencia estándar sobre la reescritura del historial; solo hazlo a la historia que aún no se ha compartido.
Actualización de junio de 2018
El manual ahora incluye una solución, utilizando
--env-filter
, en sus ejemplos: https://git-scm.com/docs/git-filter-branch#_examples :fuente
msysgit
, todavía tiene acceso abash
. De lo contrario, no tengo idea.Para reescribir tanto el autor como el responsable en todas las confirmaciones seleccionadas:
fuente
git push --all origin --force
Si no hay otros autores, puede hacer:
fuente
Guarde el script a continuación como, por ejemplo,
~/.bin/git-replace-author
y ejecútelo usando, por ejemplo:Sin argumentos, actualiza todas las confirmaciones con su nombre para usar su dirección de correo electrónico actual de acuerdo con la configuración de Git.
Raw (para descargar)
fuente
~/.bin/
tiene que estar dentro de los usuarios$PATH
y las necesidades de archivo para ser ejecutable, por lo ejecute:chmod +x ~/.bin/git-replace-author
.Solo si no has llevado tus compromisos al mundo. De lo contrario, todos los demás tienen su antiguo nombre en su repositorio, lo que es poco probable que pueda cambiar el de todos.
fuente
Con Git 2.24 (Q4 2019),
git filter-branch
(y BFG) está en desuso .El equivalente sería, usando
newren/git-filter-repo
, y su sección de ejemplo :con
my-mailmap
:Eso reemplazaría el nombre del autor y el correo electrónico de cualquier compromiso realizado por cualquier persona con
<[email protected]>
Vea la
git shortlog
sección del autor de mapeo para la sintaxis exacta defuente