¿Puedo cambiar el autor de commits en una request de extracción de GitHub sin afectar el historial de mi twig `master`?

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 .

Historial de confirmación para <code> blTool-importFile-test </ code>

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 ?

Opción 1

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.

opcion 2

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 .