Por alguna razón, solo tengo un repositorio para usar.
Pero tengo varios proyectos, incluidos java
proyectos php scripts
y Android
proyectos de aplicaciones.
Ahora mi problema es que tengo que ponerlos en diferentes subcarpetas dentro del repositorio
. Uso diferentes IDEs. Ya sabes, cada IDE puede tener un espacio de trabajo en sí mismo.
¿Quién me puede decir una mejor práctica para resolver el problema?
Respuestas:
Si bien la mayoría de la gente le dirá que solo use múltiples repositorios, creo que vale la pena mencionar que hay otras soluciones.
Solución 1
Un único repositorio puede contener múltiples ramas independientes , llamadas ramas huérfanas . Las ramas huérfanas están completamente separadas unas de otras; No comparten historias.
Esto crea una nueva rama, no relacionada con su rama actual. Cada proyecto debe estar en su propia rama huérfana.
Ahora, por alguna razón, git necesita un poco de limpieza después de un pago huérfano.
Asegúrese de que todo esté comprometido antes de eliminar
Una vez que la rama huérfana esté limpia, puede usarla normalmente.
Solución 2
Evite toda la molestia de las ramas huérfanas. Cree dos repositorios independientes y empújelos al mismo control remoto. Simplemente use diferentes nombres de sucursal para cada repositorio.
fuente
Solución 3
Esto es para usar un solo directorio para múltiples proyectos. Utilizo esta técnica para algunos proyectos estrechamente relacionados en los que a menudo necesito llevar los cambios de un proyecto a otro. Es similar a la idea de las ramas huérfanas, pero las ramas no necesitan ser huérfanas. Simplemente inicie todos los proyectos desde el mismo estado de directorio vacío.
Inicie todos los proyectos desde un directorio vacío comprometido
No esperes maravillas de esta solución. Tal como lo veo, siempre tendrás molestias con los archivos no rastreados. Git realmente no tiene ni idea de qué hacer con ellos, por lo que si hay archivos intermedios generados por un compilador e ignorados por su archivo .gitignore, es probable que se queden colgando parte del tiempo si intenta cambiar rápidamente entre, por ejemplo, su proyecto de software y un proyecto de tesis de doctorado.
Sin embargo, aquí está el plan. Comience como debería comenzar cualquier proyecto git, confirmando el repositorio vacío, y luego inicie todos sus proyectos desde el mismo estado de directorio vacío. De esa manera, está seguro de que los dos lotes de archivos son bastante independientes. Además, asigne a sus sucursales un nombre propio y no use perezosamente "master". Sus proyectos deben estar separados, así que deles nombres apropiados.
Las confirmaciones de Git (y, por lo tanto, las etiquetas y las ramas) básicamente almacenan el estado de un directorio y sus subdirectorios, y Git no tiene idea de si se trata de partes de proyectos iguales o diferentes, por lo que realmente no hay problema para que git almacene diferentes proyectos en el mismo repositorio. Entonces, el problema es que usted borra los archivos no rastreados de un proyecto cuando usa otro, o separa los proyectos más tarde.
Crea un repositorio vacío
Comience sus proyectos desde el vacío.
Trabaja en un proyecto.
Comience otro proyecto
cuando tu quieras.
Cambiar de ida y vuelta
Retroceda y avance entre proyectos cuando lo desee. Este ejemplo se remonta al proyecto de software de ajedrez.
Los archivos sin seguimiento son molestos
Sin embargo, los archivos no rastreados le molestarán al intercambiar entre proyectos / ramas.
No es un problema insuperable.
Por definición, git realmente no sabe qué hacer con los archivos no rastreados y depende de usted lidiar con ellos. Puede evitar que los archivos no rastreados se transporten de una rama a otra de la siguiente manera.
Al asegurarnos de que el directorio estaba vacío antes de revisar nuestro nuevo proyecto, nos aseguramos de que no hubiera archivos sin seguimiento colgantes de otro proyecto.
Un refinamiento
Si se especifican las mismas fechas cada vez que se confirma un repositorio vacío, las confirmaciones de repositorio vacías creadas independientemente pueden tener el mismo código SHA1. Esto permite crear dos repositorios de forma independiente y luego fusionarlos en un solo árbol con una raíz común en un repositorio más adelante.
Ejemplo
Resultado
¿Usar subdirectorios por proyecto?
También puede ayudar si mantiene sus proyectos en subdirectorios cuando sea posible, por ejemplo, en lugar de tener archivos
tener
En este caso, su archivo de software sin seguimiento será
chess/untracked_software_file.prog
. Cuando trabaje en elthesis
directorio, los archivos de programas de ajedrez no rastreados no le molestarán, y puede encontrar ocasiones en las que puede trabajar felizmente sin eliminar archivos no rastreados de otros proyectos.Además, si desea eliminar archivos no rastreados de otros proyectos, será más rápido (y menos propenso a errores) volcar un directorio no deseado que eliminar archivos no deseados seleccionando cada uno de ellos.
Los nombres de las ramas pueden incluir caracteres '/'
Por lo tanto, es posible que desee nombrar a sus ramas algo así como
fuente
Me gustaría utilizar
git submodules
.mira aquí Repositorio de Git en un repositorio de Git
Según febrero de 2019, sugeriría
Monorepos
fuente
git submodule add [url to git repo]
- git-scm.com/book/en/v2/Git-Tools-Submodules