¿Cómo debería crear un proyecto separado de un repository de Git existente?

Tengo un website que he rastreado en git desde que comencé a trabajar en él. Ahora quiero build un segundo website usando un código similar. Lo primero que pensé fue: "Ok, solo clonaré el repository de ClientA, cambiaré el nombre del clon a ClientB y comenzaré desde allí". Pero eso no me parece la forma ideal de organizar esto. En última instancia, creo que me gustaría tener un repository llamado algo así como WebsiteBoilerplate con varias sucursales para cada cliente … ¿o debería crear repositorys separados para cada cliente? ¿Hay mejores prácticas para este tipo de cosas? ¿o debería simplemente hacerlo, sin embargo, me siento? Una vez, he determinado a dónde debo ir, necesito ayuda para ir de aquí para allá en cuanto a qué commands necesito ejecutar .

Como todo depende, pero tener una twig principal donde se desarrolla el código común suena como un enfoque razonable. Luego puede tener diferentes twigs para cada sitio y mantener las twigs específicas del sitio sincronizadas con el maestro común.

Crear una twig específica del sitio es fácil:

git checkout -b siteName 

Manténgase sincronizado con el maestro fusionando o modificando los cambios desde el maestro

 git merge master 

o

 git rebase -i master 

Si tiene ganas de tener repositorys separados después de un time, puede hacerlo también. Simplemente bifurque el repository principal, y aún puede mantenerse sincronizado bajando los cambios desde el repository "ascendente".

Para bifurcar en git (no es lo mismo que fork en github) normalmente clono, cambio el nombre de origen a upstream y lo empujo a mi nuevo origen. También configuré mi local para rastrear el nuevo origen.

Suponiendo que ya tiene un origen con nombre remoto, desea cambiarle el nombre a flujo ascendente y configurar el seguimiento en el nuevo origen.

 git remote rename origin upstream git remote add origin https://origin.git git branch --set-upstream master origin/master git push origin master 

Ahora que tiene un código común en origen y en origen específico para el sitio, puede hacer un seguimiento de los cambios en el flujo ascendente:

 git fetch upstream master #checks if there are changes git merge upstream/master #merges master with the changes in upstream 

Puede combinar los dos commands anteriores con git pull upstream master