2012-01-08 35 views
10

Quiero mantener dos repositorios de git diferentes. Los repos deben permanecer en el mismo directorio raíz. ¿Cómo lograrlo?Dos repositorios de Git diferentes en el mismo directorio

Lo que estoy dispuesto a hacer es: administrar dos repos que difieren ligeramente. ¿Puedo tener dos repos completamente diferentes en la misma carpeta?

Gracias por cuidar :)

+0

posible duplicado de [repositorios Git múltiples en un directorio] (http://stackoverflow.com/questions/2519446/multiple-git-repositories- en-un-directorio) –

+0

Y [aquí] (http://stackoverflow.com/questions/2065559/using-two-git-repos-in-one-folder), y [aquí] (http: // stackoverflow. com/questions/436125/two-git-repositories-in-one-directory), y [aquí] (http://grahamc.com/blog/multiple-git-repositories-one-directory-dotfiles/), .. –

+0

El abeto st post no aborda exactamente este problema. Lo que trata es sub-modulación. Lo que estoy preguntando es: ¿Puedo crear dos repos individuales basados ​​en los mismos archivos fuente? – giga

Respuesta

10

Usted puede lograr esto mediante la adición usando una de estas dos opciones en el comando git sí:

git --work-tree=where/my/code/is --git-dir=some/path/to/my/.git status 

Esto permitirá tener 2 repos separadas comparten el mismo carpeta de trabajo.

Sin embargo, debe poder obtener lo que necesita utilizando un repositorio con múltiples ramas y tal vez solo empuje ciertas ramas a múltiples controles remotos.

+0

Sí, puedo terminar con varias ramas empujando seleccionado brunches solamente. – giga

+2

También hice una secuencia de comandos que hace que sea más fácil trabajar con repositorios superpuestos, y también se puede usar como gestor de paquetes: https://github.com/capr/multigit – cap

2

He resuelto este problema, que git no parece proporcionar una buena solución, al no usar git para resolverlo. Usé un directory junction para vincular una nueva subcarpeta a una subcarpeta de la carpeta principal (es decir, vincular una carpeta secundaria a una "carpeta tío": P). Ejemplo de símbolo de sistema para Windows Vista y hasta:

cd CurrentFolder/ 
mklink /J "LinkedFolder" "../TargetFolder" 

hará que LinkedFolder para que apunte a TargetFolder (nota las comillas). Ejemplo de estructura de archivos me permitiría utilizar:

  • root/
    • TargetFolder/
      • archivos compartidos
    • CurrentFolder/
      • LinkedFolder/

"POSIX-compliant" operating systems seem to use ln or ln -s for this functionality.

Funciona de manera excelente (nota: la siguiente es de mi propia prueba de Windows 8.1):

  • la LinkedFolder no existe antes de llamar mklink
  • cuando se hace el enlace , todo lo que haga con los archivos en TargetFolder o LinkedFolder se reflejará en el otro, ya que son uno y el mismo
  • si elimina el l ink (LinkedFolder), no pasa nada a la carpeta de destino real (TargetFolder)
  • si elimina la carpeta de destino real (TargetFolder), el enlace permanecerá activo (no se eliminará); si luego intenta acceder al enlace, simplemente obtendrá un error; si vuelve a crear la carpeta de destino real (TargetFolder), ¡el enlace continuará funcionando como antes!

Espero que esto ayude a alguien. Acabo de enterarme de esta característica y me encanta.

Consulte también:
NTFS Junction Point
NTFS Symbolic Link
Symbolic Link

Cuestiones relacionadas