Usar git para múltiples proyectos separados cuyos files comparten un directory común

Me gustaría usar git para el control de versiones de algunos files, pero no puedo encontrar las mejores prácticas en mi situación. Permítanme configurar el problema primero y luego explicar mis bashs fallidos de soluciones:

Uso un progtwig de layout óptico llamado CodeV, que está basado en command-line. Escribo macros personalizadas ("files de secuencia" en lenguaje CodeV) en su lenguaje de progtwigción. Estos files se utilizan para analizar / diseñar sistemas ópticos, por lo que deben estar disponibles para cada instancia de CodeV. Tengo todas mis macros personalizadas en un solo directory. Para ejecutarlos desde CodeV, simplemente CUSTOM_MACROS run filename.seq en la línea de command de CodeV, porque he agregado el directory CUSTOM_MACROS a mi ruta de búsqueda de files de secuencia en CodeV. Fácil.

Esta ha sido una manera muy detallada de decir que tengo muchos files potencialmente no relacionados en un solo directory.

Ahora, estos files son un trabajo en progreso, y me gustaría trabajar en ellos con mis compañeros de trabajo usando GitHub. Entonces, en mi directory CUSTOM_MACROS , podría tener esto:

 macro1.seq macro2.seq ... shanetworkingmacro3.seq shanetworkingmacro4.seq 

Quiero un control de versión separado de cada file, y supongo que eso significa repositorys separados en GitHub. ¿Cómo implemento Git localmente para lograr esto?

Intenté usar un repository en CUSTOM_MACROS y agregar todos los files, luego uso las twigs para cada file específico:

 git add -A git commit -am 'Add all of the files' git checkout -b shanetworkingmacro3 

hacer algunos cambios

 git commit -am 'Changed some stuff in shanetworkingmacro3.seq' git checkout master git merge shanetworkingmacro3 

Esto está bien, pero ahora si quiero crear una nueva macro, agrego el file y creo una nueva twig para ese proyecto, pero henetworkinga el historial de las otras confirmaciones de files. No quiero este comportamiento, solo quiero el historial de confirmación de ese file / proyecto.

¿Cuál es una mejor forma de hacerlo? Es lo que quiero posible?

Luego, cuando quiero agregar este repository a GitHub, contiene todas mis macros personalizadas, por lo que mi compañero de trabajo obtiene todos mis files cuando solo quiere compartirmacro3.

Probablemente me esté perdiendo algo básico ya que soy relativamente nuevo en Git. Si es así, indícame el recurso para que pueda aprender. Hay muchos problemas similares, pero ninguno que realmente coincida con mi caso de uso específico.

Para reiterar: ¿cómo uso git para rastrear múltiples proyectos cuyos files están en el mismo directory, y luego comparto esos proyectos con compañeros de trabajo usando GitHub?

Gracias por tu time.

No estoy seguro de cuánto va a ayudar esto, pero esa es la forma en que funciona Git. Normalmente se usa para versionar todos los files en el directory del repository. Entonces, si todos sus files están en el mismo directory, serán parte del mismo repository.

La solución de la sucursal es incómoda y no se escalará bien, como lo ha experimentado.

Aquí hay un par de ideas:

  • ¿Puedes usar subdirectorys en tu directory CUSTOM_MACROS ? Si esto fuera posible, entonces podría tener un repository por subdirectory. Esto le permitiría versionar files individuales, o agrupar files en un subdirectory si pertenecen juntos.
  • Si los subdirectorys no son una opción, podría considerar tener múltiples directorys CUSTOM_MACROS .
  • Quizás valga la pena explorar la idea de tener una colección general de macros en un repository común. ¿Realmente necesita la granularidad de tener una versión separada por macro file? Tener un repository para todas las macros haría las cosas mucho más fáciles, y tal vez incluso proporcione algún valor. Sin saber sus files y qué tan similares están en su context, es difícil de decir.

De todos modos, me gustaría mantener las cosas lo más simples posible. Si mantuviera todo en un repository, lo usaría. ¿Hay algún daño al tirar todo? ¿Son sus macros tan grandes que el almacenamiento y la velocidad de la networking son un problema al download todo el repository?