22 Stimmen

Wie man einen Verteilungszweig in Git realisiert

Ich verwende Git für ein PHP-Projekt, ich finde es sehr praktisch. Es gibt eine Sache, die großartig wäre, wenn ich es zum Laufen bekomme.

Ich habe einen Zweig erstellt, der für die Bereitstellung gedacht ist. Er hat einige Unterschiede, wie unterschiedliche Konfigurationsdateien und Dokumentation.

Ich kann sie nicht einfach ignorieren, denn dann bleiben sie in beiden Zweigen, während ich sie gerne in beiden Zweigen unterschiedlich halten würde.

Das Problem ist, dass beim Zusammenführen der Zweige auch die Dateien zusammengeführt werden, die anders sein sollen.

Gibt es eine bequeme Möglichkeit, so etwas zu erreichen? Wie wird das normalerweise gemacht?

0voto

Isaac To Punkte 111

Das ist einfach und sauber.

Sie würden einen Verteilungszweig wie folgt erstellen:

> git checkout deployment-1234

Nun können Sie die einsatzspezifischen Änderungen vornehmen. Sobald dies geschehen ist, übertragen Sie es:

> git commit -as

Gehen Sie zurück zu Ihrem Master-Zweig.

> git checkout master

Führen Sie den Verteilungszweig sofort zusammen. Dadurch wird Ihr Master-Zweig mit den einrichtungsspezifischen Änderungen geändert, aber keine Sorge, wir machen das wieder rückgängig.

> git merge --no-ff deployment-1234

Um die Änderungen rückgängig zu machen, checken Sie einfach die Dateien vor der Zusammenführung aus und übertragen Sie sie mit amend.

> git checkout HEAD^ .
> git commit --amend

Das war's. Nun behandelt git die Dateiänderungen im ersten Commit von deployment-1234 als bereits vom Master geprüft und als ungeeignet befunden. Daher wird es diese Änderungen niemals dem Master-Zweig hinzufügen, selbst wenn Sie versuchen, den gesamten deployment-1234-Zweig mit dem Master-Zweig zusammenzuführen. (Probieren Sie es aus!)

Bei einem Projekt, das eine bessere Kontrolle erfordert, verwende ich auch eine andere Methode. Der Nachteil der obigen Methode ist, dass Sie bei einer zukünftigen Zusammenführung von deployment-1234 nach master einen Konflikt erzeugen könnten. Das ist in Ordnung, wenn diese Zusammenführungen manuell sind. Aber wenn Sie automatische Zusammenführungen benötigen, ist es besser, wenn ich diesen systematischen Konflikt verhindern kann. Deshalb habe ich ein Skript erstellt, das die einsatzspezifischen Änderungen anwenden und rückgängig machen kann. Die Änderungen selbst müssen dann nicht im Repository sein, sondern das Skript erscheint im Repository.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X