Git – Varias sucursales con diferentes filesystems

¿Cómo organizar correctamente varias sucursales con cada sistema de files diferente?

Aquí está la situación –

Tengo dos twigs:

  • Maestro actual con files de proyecto que se hicieron hace un año
  • El desarrollo actual con nuevos files de proyecto (marco completamente diferente) que está a punto de desarrollarse y en un momento cambiar

El punto donde las cosas se ponen problemáticas es que desarrollar Brach tiene, por ejemplo, una carpeta de "almacenamiento" que es ignorada por el file .gitignore. Otra twig no tiene esta carpeta (y es por eso que no está en su file .gitignore también). Cuando pago desde desarrollo a master brach, esta carpeta de "almacenamiento" aparece de repente en otra twig donde no debería estar.

¿Cómo especifico cada proyecto qué files / carpeta no se deben enviar al server y al mismo time qué files / carpetas deben adherirse a cada twig sin tener que desplazarse por las twigs en cada process de pago y envío.

Pude resolver este problema agregando esta carpeta al file .gitignore en el proyecto donde esta carpeta ni siquiera debería existir (así es como no veo que tenga ningún file sin modificar que deba ser comprometido) pero supongo que no es el La mejor solución, porque ¿por qué excluiría algo que ni siquiera debería estar allí?

Se vuelve aún más complicado cuando estoy usando PHPStorm IDE. PHPStorm crea en cada proyecto (en este caso, cada twig) una carpeta ".idea" donde se encuentran todos los files de configuration e historial para un proyecto específico. Obviamente, no quiero enviar esta carpeta al repository remoto (porque cada desarrollador tiene su propia carpeta .idea para cada proyecto), es por eso que la excluyo en el file .gitignore (hice esto para ambas twigs porque cada twig tiene su propia carpeta ".idea"). Cuando pago en otra sucursal, esta carpeta viaja a esa sucursal, lo que no debería ocurrir porque esta carpeta .idea arruina la carpeta .idea de otro branche. Todas las configuraciones están en mal estado.

¿Por qué dos filesystems de proyectos diferentes como dos twigs y no dos proyectos? – Porque es el mismo proyecto. Una versión completamente nueva que cumple el mismo layout visual, funcionalidad y agrega mucha funcionalidad adicional. No tiene sentido llamar esto como algún otro proyecto. Es una versión diferente pero el mismo proyecto.

Si ignoras files / carpetas con .gitignore, Git lo ignora. No son rastreados y no son destrozados, simplemente son ignorados. No se agregan, modifican o eliminan, sino que se ignoran por completo. No están asignados a ninguna twig, ya que son ignorados.

Creo que en su caso sería lo mejor tener múltiples worktrees para las diferentes twigs. Un tree de trabajo es el directory donde se guardan los files para que pueda trabajar. Con git worktree puedes agregar múltiples worktrees a un repository, lo que permite tener diferentes twigs revisadas en diferentes directorys de trabajo.

De esta forma puede tener la carpeta a para la twig a , donde ha ignorado .idea para la twig a y la carpeta b para la twig b donde ha ignorado .idea para la twig b .

En realidad, la mayoría de los files en .idea (p. Ej., No workspace.xml , pero creo que todos los demás files) no son específicos del desarrollador, sino específicos del proyecto. De modo que todo, excepto workspace.xml se debe poder incorporar en el control de la versión, de modo que si cambia a una twig diferente, tiene los metadatos IDE correctos disponibles para esta twig y solo tiene /.idea/workspace.xml agregado a .gitignore ya que este file contiene elementos específicos del desarrollador como configuraciones de ejecución no compartida, files abiertos, layout de window de herramientas, posiciones de window, etc. Entonces esta podría ser otra solución para que consideres.