Tuve un problema similar y lo resolví modificando mi trabajo para que coincida con la organización del archivo de destino.
Digamos que modificó original.txten su rama (la localrama), pero en la rama maestra, original.txtse ha copiado a otra, por ejemplo copy.txt. Esta copia se ha realizado en un commit que llamamos commit CP.
Desea aplicar todos los cambios locales, confirmaciones Ay a Bcontinuación, que se realizaron en original.txtel nuevo archivo copy.txt.
---- X -----CP------ (master)
\
\--A---B--- (local)
Cree una rama desechable moveen el punto de partida de sus cambios con git branch move X. Es decir, ponga la moverama en commit X, la anterior a las commits que desea fusionar; Lo más probable es que este sea el compromiso desde el que se ramificó para implementar sus cambios. Como el usuario @digory doo escribió a continuación, puede hacer git merge-base master localpara encontrar X.
---- X (move)-----CP----- (master)
\
\--A---B--- (local)
En esta rama, emita el siguiente comando de cambio de nombre:
git mv original.txt copy.txt
Esto cambia el nombre del archivo. Tenga en cuenta que copy.txttodavía no existía en su árbol en este momento.
Compromete tu cambio (llamamos a este compromiso MV).
/--MV (move)
/
---- X -----CP----- (master)
\
\--A---B--- (local)
Ahora puede cambiar su trabajo por encima de move:
git rebase move local
Esto debería funcionar sin problemas y sus cambios se aplicarán copy.txten su sucursal local.
/--MV (move)---A'---B'--- (local)
/
---- X -----CP----- (master)
Ahora, no necesariamente desea o necesita comprometerse MVen el historial de su sucursal principal, porque la operación de mover puede generar un conflicto con la operación de copia al confirmar CPen la sucursal principal.
Solo tiene que volver a basar su trabajo nuevamente, descartando la operación de movimiento, de la siguiente manera:
git rebase move local --onto CP
... dónde CPestá el commit donde copy.txtse introdujo en la otra rama. Esto reajusta todos los cambios copy.txten la parte superior de la CPconfirmación. Ahora, su localrama es exactamente como si siempre la modificara copy.txty no original.txt, y puede continuar fusionándose con otros.
/--A''---B''-- (local)
/
-----X-------CP----- (master)
Es importante que los cambios se apliquen CPo de lo contrario copy.txtno existirían y los cambios se volverían a aplicar original.txt.
Espero que esto esté claro. Esta respuesta llega tarde, pero puede ser útil para otra persona.