Hago algo similar todo el tiempo. Uso GIT para rastrear múltiples lanzamientos y múltiples ramas de un gran proyecto SVN. El proyecto tiene ~ 200 módulos SVN cada uno en un subdirectorio de 'src'. Cuando comencé el repositorio GIT, revisé v9.4.4 del proyecto, hice un 'git init' agregado .gitignore y .gitattributes, hice un 'git add -A' y 'git commit -m' v9.4.4 '. Entonces I moví .git fuera del proyecto y creé un enlace simbólico a él. Cuando apareció la versión v9.4.5, lo comprobé, agregué un enlace simbólico al directorio .git ahora compartido, agregué .gitignore y .gitattributes, hice un 'git add -A' y 'git commit -m' v9. 4.5 '. En este punto, tengo un repositorio GIT simbólicamente vinculado desde dos directorios.
Con esta configuración puede realizar cualquier operación de git que no toque el directorio de trabajo. Entonces, para mi aplicación, 'git diff v9.4.4..v9.4.5' funciona muy bien. Por supuesto, también puede hacer operaciones git que sí tocan el índice y el directorio de trabajo, pero luego debe tener cuidado de que ese repositorio esté en la confirmación correcta para el lanzamiento en el que está sentado.
También he usado esto para múltiples ramas. En ese caso, es fundamental utilizar 'git symbolic-ref HEAD refs/heads/a-branch' para cambiar la rama sin tocando el directorio de trabajo. Así que cuando apareció mi versión de proyecto s3, hice una 'git branch s3 v9.4.4', creé mi enlace simbólico .git, hice 'git symbolic-ref HEAD refs/heads/s3' y lo seguí con 'add' y 'cometer.'
Creo que esto es lo mismo que eliminar todos los archivos de la copia de trabajo de Git y pegar archivos del repositorio de CVS. Esto debería funcionar y mostrarle todos los cambios que se han realizado. – Tadeck