2011-03-24 39 views

Respuesta

5

Puede clonarlo, y luego aplicar en el clon una rama de filtro para dividir ese repositorio, extrayendo solo el directorio que desee (con su historial completo).

Ver Detach subdirectory into separate Git repository

Nota del git clone --no-hardlinks /XYZ /ABC utilizado durante la etapa de clonación:

El interruptor --no-hardlinks hace git utilizar copias de archivo real en lugar de un enlace duro al clonar un repositorio local.

-1

Puede clonarlo y guardar los archivos que desea; la historia será preservada.

2

Suponiendo que solo desea mantener el subdirectorio como un proyecto separado: puede usar git filter-branch para eso.

  1. Crear una nueva rama
  2. Definir un "filtro de árbol" que reordena Una copia de la manera deseada, idealmente como una secuencia de comandos independiente
  3. Run git filter-branch --tree-filter=/path/to/script thebranch

Ahora tiene una rama separada que no está relacionada con la secuencia de desarrollo normal, que contiene solo el subdirectorio. Quien clona la nueva rama obtiene solo el historial del subproyecto.

+1

No necesita definir un filtro de árbol (personalizado) aquí. El filtro de subdirectorio integrado hace exactamente esto, como se describe en la respuesta vinculada a en [respuesta de VonC] (http://stackoverflow.com/questions/5421386/how-do-i-create-a-new-git-repository -from-a-folder-in-an-existing-git-repository/5421581 # 5421581). Tampoco desea hacer esto en una nueva rama en el mismo repositorio, sino en clones separados. Si un repositorio contenía tanto el subdirectorio como el proyecto completo en sucursales separadas, un clon inicial obtendría ambos, creando ramas de seguimiento remoto para cada uno. ¡Antieconómico! – Cascabel

Cuestiones relacionadas