¿Cómo puedo usar git para templates de proyectos?

Tengo una plantilla / código de punto de partida que reutilizo en todos los proyectos. Mientras trabajo en el nuevo proyecto, siempre quiero agregar y cambiar cosas en la plantilla. Desarrollar la plantilla junto con el proyecto, supongo.

Algunas de mis adiciones son específicas del proyecto y no deberían comprometerse con la plantilla. Otros deberían.

Apuesto a que podría usar git para esto, pero no estoy seguro de cómo. Tengo un repository git para la plantilla y uno para cada proyecto. Me gustaría que algunos, pero no todos, se comprometan a hacer que los vuelva a enviar a la plantilla. ¿Puedo hacer un subset de files que no se vuelven a comprometer? ¿Debo trabajar en cosas específicas del proyecto en una twig y la plantilla en el maestro?

Realmente aprecio cualquier idea. Mi google-fu rinde poco.

Recomendaría crear una sucursal específicamente para cualquier cambio de plantilla que desee realizar. Pero asegúrese de iniciarlo a partir de uno de los compromisos anteriores, para que no obtenga cambios específicos del proyecto en su plantilla. Algo así como git checkout -b template_changes EARLY_COMMIT_SHA . Luego, cualquier cambio de plantilla que ya hayas realizado, puedes seleccionarlo de manera git cherry-pick TEMPLATE_CHANGE_SHA : git cherry-pick TEMPLATE_CHANGE_SHA .

Cualquier cambio futuro en la plantilla que le gustaría hacer podría hacerse en la twig de la plantilla y fusionarse con otras twigs del proyecto; pero si está lo suficientemente lejos, es posible que desee cambiar al proyecto de la plantilla.

Para enviar los cambios de plantilla desde el proyecto al repository de plantilla git, puede hacer git format-patch SHA_FROM_WHERE_TEMPLATE_BEGAN . Esto creará un montón de files de parches que deberá copyr al repository de templates y ejecutar git apply 0001-... 0002-... para aplicar los parches, pero eso no es muy divertido.

Una cosa más de git-fu sería agregar el repository de plantilla en el proyecto repo git remote add template /path/to/template/repo . Puede que tenga que jugar con las opciones -t o -m o el command git remote set-head template template_branch:master (o algo así) si existe la twig de la plantilla. Entonces deberías poder enviar tus cambios al repository de templates con la plantilla de git push template template_branch . Si el encabezado de template_branch no tiene la propiedad establecida, es posible que tengas que hacer git push template template_branch:master .

Espero que esto funcione para usted. ¡Y divertirse!