Melhor prática para gerenciar variantes de projeto no Git?

Eu tenho que desenvolver dois projetos Django que compartilham 90% do mesmo código, mas tem algumas variações em vários aplicativos, modelos e dentro do próprio modelo.

Estou usando o Git para controle de origem distribuído.

Minhas exigências são as seguintes:

código comum para ambos os projetos é desenvolvido em um único lugar (ambiente de desenvolvimento do Projeto 1)

periodicamente isso é mesclado no ambiente de desenvolvimento do segundo projeto (Projeto 2)

as variações não são facilmente encapsuladas nos aplicativos. (por exemplo, há aplicativos, como "perfis", que variam entre o Projeto 1 e o Projeto 2, mas para os quais também há uma evolução comum contínua)

Tanto o Project1 quanto o Project2 possuem repositórios públicos, para que eu possa colaborar com os outros

Da mesma forma, o Project1 e o Project2 devem ter servidores de desenvolvimento, demonstração, teste e produção.

no entanto, o repositório público não está no mesmo servidor nos dois casos. Então, por exemplo, quando estou desenvolvendo no Project1, eu quero ser capaz de "empurrar" para o meu servidor github, mas não tenho coisas do Project2 indo para lá.

existem arquivos como local_settings.py que são completamente diferentes entre o Project1 e o Project2, mas devem ser compartilhados entre vários desenvolvedores de cada projeto

Então, qual é a melhor maneira de gerenciar essa situação?

O que parece ser ideal seria algo como um "pull filtrado", onde ao invés de .gitignore dizer "ignorar esse arquivo completamente", eu posso dizer "ignorar esse arquivo ao extrair desse repositório" Eu não conseguia ver nada assim na documentação, mas pode haver algo assim?

questionAnswers(5)

yourAnswerToTheQuestion