Git: rebasar un archivo en el historial pasado de ese archivo

Git: rebasar un archivo en el historial pasado de ese archivo

Digamos que tengo un archivo filenameen un repositorio git en subirectory dir1con un historial similar a este:

v7 --- v8 --- v9 --- v10

El archivo es parte de un repositorio más grande con varios subdirectorios, pero solo los conjuntos de cambios anteriores afectan a este archivo. Ahora he desenterrado una versión antigua de ese archivo ( filenametambién) que por error se envió a otro subdirectorio dir2. Esta versión anterior sólo "existe" en un conjunto de cambios, por ejemplo:

v4

El problema ahora es, ¿puedo reescribir el historial de estos dos archivos (en git) para que parezca como si filenamesolo hubieran existido, lo que da como dir1resultado un historial similar a este?

v4 --- v7 --- v8 --- v9 --- v10

Supongo que podría intentar eliminar el archivo dir2y enviarlo como una nueva versión del archivo dir1, pero eso arruinará el historial real del archivo, de modo que la versión más antigua del archivo aparecerá como la más nueva.

Tengo muy poca experiencia con "modificar" el historial de los repositorios de git, así que no sé cómo hacerlo, pero supongo que rebase puede ser la respuesta. Soy el único que trabaja en el repositorio, por lo que mi única preocupación será sincronizar estos cambios en dos computadoras.

Supongo que lo que quiero hacer es dejar el archivo originalmente en dir2el lugar donde está en el historial, pero quiero cambiar la confirmación llamada v4anteriormente para que el archivo sea una versión del archivo en formato dir1.

información relacionada