Respuestas:
Parece que quieres usar submódulos de Git .
Git aborda este problema mediante submódulos. Los submódulos le permiten mantener un repositorio de Git como subdirectorio de otro repositorio de Git. Esto le permite clonar otro repositorio en su proyecto y mantener sus confirmaciones separadas.
Siempre he usado enlaces simbólicos para mantener dos repositorios separados y distintos.
.gitignore
?
rsync -avh --delete --exclude='.git' REPO-B/ REPO-A/REPO-B-copy/
después de que haya cambios en REPO-B
Sí, puedes hacer exactamente lo que estás pidiendo con la jerarquía de archivos que dibujaste. Repo-B será independiente y no tendrá conocimiento de Repo-A. Repo-A rastreará todos los cambios en sus propios archivos y archivos de Repo-B.
Sin embargo, no recomendaría hacer esto. Cada vez que cambie archivos y confirme en Repo-B, tendrá que confirmar en Repo-A. La ramificación en Repo-B afectará a Repo-A y la ramificación en Repo-A será inestable (problemas para eliminar carpetas, etc.). Los submódulos son definitivamente el camino a seguir.
Puede lograr lo que desea (ese repositorio REPO-A contiene todos los archivos, incluidos los de la carpeta REPO-B en lugar de solo una referencia) utilizando "git-subrepo":
https://github.com/ingydotnet/git-subrepo
Todavía funciona si algunos de sus colaboradores no tienen instalado el comando subrepo; verán la estructura de carpetas completa pero no podrán realizar cambios en los subrepos.