He cometido un montón de confirmaciones para un proyecto en Github, sin embargo, me di cuenta de que no había configurado el correo electrónico y el nombre completo del confirmador en la computadora que estoy usando actualmente para hacer mis confirmaciones y, por lo tanto, el avatar y la dirección de correo electrónico de los usuarios no están allí.
¿Cómo puedo reescribir todos los correos electrónicos y nombres de usuario anteriores?
Respuestas:
Puedes agregar este alias:
Para cambiar el nombre del autor:
o el correo electrónico de solo las últimas 10 confirmaciones:
Alias:
Fuente: https://github.com/brauliobo/gitconfig/blob/master/configs/.gitconfig
fuente
git change-commits GIT_COMMITTER_EMAIL "[email protected]" "[email protected]"
para cambiar el correo electrónico del confirmador.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/
Mira aquí :
fuente
Si ya ha enviado algunas de sus confirmaciones al repositorio público, no desea hacer esto, o podría hacer una versión alternativa del historial del maestro que otros podrían haber utilizado. "No cruces las corrientes ... Sería malo ..."
Dicho esto, si son solo las confirmaciones que ha realizado en su repositorio local, entonces corrija esto antes de pasar al servidor. Puede usar el
git filter-branch
comando con la--commit-filter
opción, por lo que solo edita confirmaciones que coinciden con su información incorrecta, como esta:fuente
git update-ref -d refs/original/refs/heads/master
, consulte < stackoverflow.com/a/7654880/333403 >.A previous backup already exists in refs/original/
en ese caso, vuelva a ejecutarlo con el nuevo correo electrónico y agregue un-f
antes del --commit-filter. Úselo a su propia discreción. Por-f
lo general, es algo peligroso hacer sin saber lo que está haciendo.Después de aplicar la respuesta de Olivier Verdier:
... para impulsar el historial cambiado en el uso del repositorio original:
El comando anterior (tenga en cuenta el signo más) obliga a reescribir el historial en el repositorio original también. Usar con precaución!
fuente
https://help.github.com/articles/changing-author-info/
Esto funcionó totalmente para mí. Después de git push, asegúrese de ver la actualización en el portal web de git. Si el compromiso aún no estaba vinculado a mi cuenta, se mostraba una imagen en miniatura predeterminada al lado del compromiso y no se reflejaba en el gráfico de la línea de tiempo de mis contribuciones, vaya a la url de compromiso y agregue .patch al final de la url, y verifique el nombre y el correo electrónico son correctos.
fuente
Para aquellos que solo quieren la versión fácil de copiar y pegar (además de actualizar los correos electrónicos y los nombres):
fuente
Teniendo en cuenta el uso de no
git-filter-branch
es deseable , hacer lo mismo en git-filter-repo (es posible que deba instalarlo primero conpip install git-filter-repo
):Si el repositorio es original, sin control remoto, deberá agregarlo
--force
para forzar la reescritura. (Es posible que desee crear una copia de seguridad de su repositorio antes de hacer esto).Si no desea conservar las referencias (se mostrarán en el historial de ramas de la GUI de Git), deberá agregarlas
--replace-refs delete-no-add
.Para obtener funciones más avanzadas, consulte "Filtrado de nombres y correos electrónicos" .
PS robado y mejorado de https://stackoverflow.com/a/59591928/714907 .
fuente