Git-Zweig für Instanzen einer Website?

621
diegueus9

Ich arbeite auf mehreren Websites. Beide Websites benötigen fast denselben Code, abgesehen von einigen Änderungen an Bildern und CSS oder Einstellungen.

Ich bin gerade fertig, um das Kapitel der Branchs von Pro Git zu lesen und bin etwas verwirrt. Wenn eine Branche nicht die beste Lösung für dieses Problem ist, ist eine Gabelung?

Ich meine, wir haben die Instanzen A und B des Codes, zwischen A und B, die Unterschiede sind Dinge wie CSS-Farben, URLs, API-Schlüssel, aber der größte Teil des Codes ist derselbe, also wie kann ich damit umgehen, Ich brauche so etwas wie Code in A und dann 'patch' ihn, um B zu bekommen, aber ich bin mir nicht sicher, wie man eine Zusammenführung macht, die Bilder nicht überschreibt ...

Wie auch immer, wenn es sich um eine Verzweigung oder eine Verzweigung handelt, wie kann ich neue Features in A zusammenführen, ohne die Änderungen in B zu verlieren?

7

2 Antworten auf die Frage

2
Seth Robertson

Warum erstellen Sie nicht einen "Template" -Zweig, der alle Gemeinsamkeiten aufweist, und fügen Sie diesen in die Pro-Website-Filialen ein? Keines der angepassten Elemente sollte jemals im Vorlagenzweig angezeigt werden, und idealerweise werden die benutzerdefinierten Elemente in speziellen Dateien gespeichert, obwohl dies keine zwingende Notwendigkeit ist. Wenn Sie auf Dateiebene isolieren können, .gitignore die angepassten Dateien im Vorlagenzweig zur Sicherheit.

Wenn Sie eine Änderung vornehmen, ändern Sie sie in der Vorlage und führen Sie sie nacheinander mit jedem Zweig zusammen. Jede Website sollte die Änderung auf die Vorlage anwenden und ihre individuelle Arbeit beibehalten.

1
Kromey

Das ist ein bisschen schwierig und ich fürchte, es gibt keine "richtige" Antwort. Ich stimme zu, dass die Aufrechterhaltung separater Zweige für A und B keine angemessene Verwendung von Git ist.

Ihre erste Option besteht darin, einfach eines voneinander zu trennen. Der Nachteil ist natürlich, dass Sie jetzt zwei separate Codebasen unterhalten müssen. Hässlich.

Die zweite Möglichkeit besteht darin, nur die Unterschiede zu verzweigen (z. B. die Verzeichnisse images und css). Dies würde Ihnen 3 Git-Repositories hinterlassen: den Code (nur eine Codebasis, die verwaltet werden muss, Hurra!), Die Images / css / etc. für A und dasselbe für B. Der Nachteil bei diesem Ansatz ist, dass die Bereitstellung komplizierter wird, insbesondere wenn Sie Code- und Stiländerungen gleichzeitig implementieren müssen.

Alternativ können Sie git sicherlich dazu missbrauchen, ein einzelnes Repository mit A und B als getrennten Zweigen zu verwalten. Nein, es ist nicht ideal, aber streng genommen würde es funktionieren. Es ist jedoch eine unangenehmere Lösung für das Problem als der erste Vorschlag (A und B vollständig zu trennen).

Niemand außer Ihnen (und Ihrem Team) kann Ihnen sagen, welcher Ansatz "richtig" für Ihre Situation ist. Ich wünsche Ihnen viel Glück!