En mi repository de GitHub, hay una request de extracción abierta para fusionar los cambios de la twig blTool-importFile-test
en master
. Varias confirmaciones de new-files
se cometieron accidentalmente con direcciones de correo electrónico internas inalcanzables, y me gustaría corregir esto antes de fusionarme en el master
.
Tenga en count que este problema es similar a " Cambiar el nombre del autor y del confirmador y el correo electrónico de varias confirmaciones en Git ". La principal diferencia es que solo deseo cambiar el autor en unos pocos commits exclusivos de la twig de new-files
, en lugar de reescribir el historial de todo mi proyecto.
¿Es posible cambiar el autor para confirmaciones en mi blTool-importFile-test
sin afectar el historial de master
?
Parece que desea cambiar la información del autor si la dirección de correo electrónico es ***@***.internal
, ***@***.internal
puede usar la forma:
$ git filter-branch --commit-filter ' if [ "$GIT_AUTHOR_EMAIL" = "***@***.internal" ]; then GIT_AUTHOR_NAME="new name"; GIT_AUTHOR_EMAIL="new email"; git commit-tree "$@"; else git commit-tree "$@"; fi' HEAD
Esto searchá en todo el historial de compromisos.
Si no desea search en todos los historiales de confirmación, también puede editar una determinada información de autor de confirmación por separado. Como quiera cambiar el autor para commitA
, necesita encontrar el padre de commitA
(commit before commitA
), y luego usar los siguientes pasos:
git rebase -i <parent of commitA> -p
ingrese i , y cambie pick
como edit
para commitA
: edit commitA
. Luego ingrese Esc y :wq
en la window interactiva.
git commit --amend --author="name <email address>" git rebase --continue
Luego, cambie el autor para otras confirmaciones usando el mismo método.
Nota: -p
( --preserver-merges
) mantendrá la estructura como fusionada. Y cuando la rebase maneja la fusión se compromete, puede haber conflicto, debe modificar / save los files de conflicto como lo hizo en la fusión, y luego usar git add .
y git rebase --continue
.