tipos tag remove qué existen etiquetas crear git git-filter-branch

tag - qué tipos de etiquetas existen en git



¿Puedo cambiar mi nombre y apellido en todas las confirmaciones anteriores? (5)

Me gustaría cambiar mi nombre, apellido y correo electrónico en todos mis commits, ¿es posible?


Guarde el script a continuación como, por ejemplo, ~/.bin/git-replace-author y ejecútelo usando, por ejemplo:

git replace-author "John Ssmith" "John Smith" "[email protected]"

Sin argumentos, actualiza todos los commits con su nombre para usar su dirección de correo electrónico actual de acuerdo con la configuración de Git.

DEFAULT_NAME="$(git config user.name)" DEFAULT_EMAIL="$(git config user.email)" export OLD_NAME="${1:-$DEFAULT_NAME}" export NEW_NAME="${2:-$DEFAULT_NAME}" export NEW_EMAIL="${3:-$DEFAULT_EMAIL}" echo "Old:" $OLD_NAME "<*>" echo "New:" "$NEW_NAME <$NEW_EMAIL>" echo "To undo, use: git reset $(git rev-parse HEAD)" git filter-branch --env-filter / ''if [ "$GIT_AUTHOR_NAME" = "${OLD_NAME}" ]; then export GIT_AUTHOR_NAME="${NEW_NAME}" export GIT_AUTHOR_EMAIL="${NEW_EMAIL}" export GIT_COMMITTER_NAME="${NEW_NAME}" export GIT_COMMITTER_EMAIL="${NEW_EMAIL}" fi''

Raw (para descargar)


Para volver a escribir el autor y el commiter en todos los commits seleccionados:

git filter-branch --commit-filter / ''if [ "$GIT_AUTHOR_NAME" = "OldAuthor Name" ]; then / export GIT_AUTHOR_NAME="Author Name";/ export [email protected];/ export GIT_COMMITTER_NAME="Commmiter Name";/ export [email protected];/ fi;/ git commit-tree "$@"''


Si no hay otros autores, puede hacer:

git filter-branch --commit-filter ''export GIT_AUTHOR_NAME="authorname"; / export [email protected]; git commit-tree "$@"''


Solo si no has empujado tus compromisos al mundo. De otro modo, todos los demás tienen su antiguo nombre en su repositorio, lo que es poco probable que pueda cambiar el de todos.


Usa git-filter-branch .

git filter-branch --commit-filter ''if [ "$GIT_AUTHOR_NAME" = "Josh Lee" ]; then export GIT_AUTHOR_NAME="Hobo Bob"; export [email protected]; fi; git commit-tree "$@"''

Esto solo afecta al autor, no al committer (que para la mayoría de los commits será el mismo que el del autor). Si también desea reescribirlos, configure las variables GIT_COMMITTER_NAME y GIT_COMMITTER_EMAIL .

Se aplica la advertencia estándar sobre el historial de reescritura; solo hágalo en la historia que aún no se haya compartido.