Los archivos rastreados con enlaces múltiples no harán que el almacén de objetos de Git crezca mucho, ya que cada enlace estará representado por el mismo objeto blob. Sin embargo, su árbol de trabajo podría terminar creciendo debido a enlaces rotos.
Git no rastrea si los archivos de árbol rastreados y en funcionamiento son enlaces duros al mismo archivo.
Git dejará solo archivos de árbol enlazados, rastreados y en funcionamiento si no le pide que haga algo que implique modificar el contenido de esos nombres de ruta o eliminar las entradas del directorio de nombres de ruta. Pero, si tuviera que (por ejemplo) verificar una confirmación o rama antigua y luego volver a su rama / confirmación normal más reciente, entonces Git terminará "rompiendo" los enlaces duros (reemplazando los nombres de ruta afectados con nuevos (pero idénticos) ) en lugar de recrear su situación de enlace múltiple).
Para recuperar su estado de enlace múltiple, puede escribir un programa para buscar archivos idénticos y volver a vincularlos a cualquiera de los archivos. Tal operación de "reenlace" puede ser más complicada si todos los enlaces no están en el árbol de trabajo o, al menos, no en una ubicación "externa" fácilmente identificable (es decir, probablemente será difícil recuperar los enlaces si está enlazando) Archivos "aleatorios" de todo su directorio de inicio en un repositorio de "copia de seguridad" y usando Git para modificar el árbol de trabajo).
La idea ha surgido en la lista de correo de Git: