¿Cómo fusionar el repositorio git anidado en el repositorio principal, conservando el historial?

Ahora sé que la mayoría de los expertos en git pensarán de inmediatogit rebase, pero estoy usando la palabra "rebase" en el sentido más general: tengo la siguiente estructura de mi proyecto:

.
..
.git
tools
lib
src
    .git
build

Ambos. y./src directorio son evidentementegit repositorios, y tienen, literalmente, una larga historia y un gran número de confirmaciones cada uno. El repositorio en. ignorasrc Directorio (que es su propio repositorio).

Acabo de darme cuenta de que, en cambio, quisiera tener un solo repositorio en. rastreando todo, incluidos los archivos de origen, porque, francamente, el sistema de compilación está evolucionando junto con el código fuente, y se ha vuelto bastante extenso.

Mi problema es que no sé cómo hacer que este repositorio conserve el historial que ahora forma parte del repositorio ensrc. ¿Es incluso posible? Esto es lo que quise decir con 'rebasado' - si hay cambios en./src/main.c son seguidos por./src/.git En algunas confirmaciones de N, quiero conservar estos cambios y hacer que formen parte del nuevo repositorio../.git. Misma historia, ruta de archivo rebasada.

ACTUALIZAR

La fusión de subárbol es algo más que lo que quiero, de lo que recogí en SO. En resumen, hace mucho más de lo que necesito. Simplemente necesito el contenido del antiguo repositorio, juntostodas las ramas de desarrollo y todas las confirmaciones, etiquetas, etc. para que parezca que siempre fueron parte del repositorio principal. En esencia, el único cambio son las rutas a los archivos en sí, donde antes se rastreaba el niño./main.c, el nuevo repositorio ahora rastreará./src/main.c, y como he oído,git rastrea el contenido, no los archivos, luego cambiar las rutas de los archivos como las anteriores y las referencias a estas rutas, debería ser algo trivial, ¿correcto?

Respuestas a la pregunta(4)

Su respuesta a la pregunta