Eche un vistazo en su directorio .git
. Puede haber muchos archivos pero caen en una cantidad bastante pequeña de grupos regulares (datos de la tienda de objetos, refs, reflogs, etc.). Puede separar los contenidos en dos categorías principales: datos que Git normalmente podría transportar a otros repositorios y datos que Git normalmente no transportaría a otros repositorios.
No normalmente transportados:
HEAD
, FETCH_HEAD
, ORIG_HEAD
, MERGE_HEAD
config
description
hooks/
index
info/
- diverso
logs/
- reflogs
Normalmente transportados (por ejemplo,a través de los clones, se captan, se empuja y paquetes):
objects/
packed-refs
refs/
Este último grupo representa el almacén de objetos y sus puntos de entrada publicados. Obviamente tendrá que revisar el contenido versionado para determinar si hay algo sensible en él.
Los HEAD, index
(no están presentes en un repositorio vacío) y los reflogs (logs/
) son todos puntos de entrada adicionales en el almacén de objetos. Si ha reescrito alguna historia (por ejemplo, borró recientemente algún archivo de configuración sensible del historial grabado) querrá prestar especial atención a los reflogs (probablemente no habilitados en la mayoría de los repositorios desnudos) y la parte refs/original/de los refs espacio de nombres
FETCH_HEAD
y config
pueden tener las direcciones de repositorios Git relacionados.
config
podría tener otra información confidencial.
info/
tiene varios bits de información; algunos de ellos podrían ser sensibles (información/alternativas); es menos probable que algunos sean sensibles (suponiendo que el contenido en sí mismo es "limpio" -info/refs, info/packs); algunos pueden ser importantes para el funcionamiento del repositorio (información/injertos). Cualquier herramienta adicional que estuviese usando (scripts de enlace, interfaces web, etc.) podría estar almacenando datos aquí; algunos de ellos pueden ser sensibles (listas de control de acceso, etc.).
Si hay algo activo en hooks/
, querrá evaluar si debe proporcionarse con la copia del repositorio (también verifique si almacena datos adicionales en cualquier parte del repositorio).
El archivo description
es probablemente inocuo, pero también puede comprobarlo.
Si sólo va a dar el relevo el contenido, entonces debería probablemente sólo clonar a un repositorio desnudo fresco o utilizar un paquete (como git bundleVonC describes).
Si usted es responsable de distribuir el contenido y el proceso que utiliza para administrarlo, entonces deberá investigar cada bit del repositorio individualmente.
En general (o de una manera más “paranoico”), hay muchos lugares dentro de la jerarquía de un repositorio Git en la que alguien podría almacenar cualquier archivo aleatorio. Si quiere asegurarse de que solo está regalando datos que Git necesita, debe usar un clon o conjunto. Si necesita proporcionar algunos de sus datos "por repositorio" (por ejemplo, un enlace utilizado para administrar el repositorio), debe clonar en un repositorio nuevo (use una dirección URL file:
para evitar copiar y enlazar archivos de almacenamiento de objetos existentes) y reinstalar solo los ganchos/datos que se necesitan para cumplir con sus obligaciones.
¡Derecho! El archivo '.git/config' puede ser sensible. +1 – VonC