Best Practice zum Verwalten von Projektvarianten in Git?

Ich muss zwei Django-Projekte entwickeln, die 90% des gleichen Codes gemeinsam haben, aber einige Variationen in verschiedenen Anwendungen, Vorlagen und im Modell selbst aufweisen.

Ich benutze Git für die verteilte Quellcodeverwaltung.

Meine Anforderungen sind:

gemeinsamer Code für beide Projekte wird an einem Ort entwickelt (Entwicklungsumgebung von Project1)

in regelmäßigen Abständen wird dies in die Entwicklungsumgebung des zweiten Projekts (Project2) übernommen

Die Variationen lassen sich nicht einfach in Apps einbinden. (ZB gibt es Apps wie "Profile", die zwischen Projekt1 und Projekt2 variieren, für die es aber auch eine ständige gemeinsame Entwicklung gibt.)

Sowohl Project1 als auch Project2 verfügen über öffentliche Repositorys, sodass ich mit anderen zusammenarbeiten kann

Ebenso sollten Project1 und Project2 Entwicklungs-, Demo-, Staging- und Produktionsserver haben.

In beiden Fällen befindet sich das öffentliche Repository jedoch nicht auf demselben Server. Wenn ich zum Beispiel in Project1 entwickle, möchte ich in der Lage sein, auf meinen Github-Server zu "pushen", aber nicht, dass Project2-Inhalte dort abgelegt werden.

Es gibt Dateien wie local_settings.py, die zwischen Project1 und Project2 völlig unterschiedlich sind, die jedoch von mehreren Entwicklern jedes Projekts gemeinsam genutzt werden sollten

Wie lässt sich diese Situation am besten bewältigen?

Was als ideal erscheinen würde, wäre so etwas wie ein "gefilterter Abzug", bei dem anstelle von .gitignore "Diese Datei vollständig ignorieren", "Diese Datei beim Abzug aus diesem Repo ignorieren" gesagt werden kann. Ganz so etwas konnte ich nicht sehen in der Dokumentation, aber könnte es so etwas geben?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage