Änderungen am Master mit Git in alle Zweige zusammenführen?

8

Ich verwende git, um mehrere Arbeitskopien meines Codes zu verwalten. Die Idee ist, dass ich jeden Zweig auschecken, erstellen und ausführen kann, um zu sehen, wie das Feature x des Zweigs zum aktuellen Status des Codes passt.

Git's Master-Zweig ist der Trunk und die anderen Git-Zweige sind Features oder Dinge, die ich ausprobieren möchte. Daher besteht meine typische Verwendung darin, den Master mit den neuesten Fixes zu aktualisieren und dann den Master in die einzelnen Zweige zu integrieren, so dass jeder von ihnen auf dem neuesten Stand bleibt.

Dieses System funktioniert gut für mich, außer für die Tatsache, dass ich einen Zweig auschecken, den Master zusammenführen und für die anderen Zweige spülen / wiederholen muss. Angesichts eines Versionskontrollsystems wie git, sehe ich diese Skalierung nicht sehr gut, da ich im Laufe der Zeit dazu neigen würde, viele Zweige hervorzubringen.

Ich bin immer noch ein git Anfänger, also vermute ich, dass es einen Mechanismus der Art gibt, den Git bereits hat, dass ich vielleicht fehlen würde. Ist dort eines? Wenn nicht, wie schreibt man eine Änderung an allen Zweigen fest, damit sie selbstständig auf dem Laufenden bleiben?

    
Carl 24.02.2010, 21:32
quelle

3 Antworten

5

Eine Möglichkeit (nicht selbst getestet) wäre:

  • um ein blankes Repo zu erstellen, wo Sie Ihren Master-Zweig drücken können.
  • haben einen Post-Receive-Hook (siehe githooks man page ) auf diesem bloßen Repo, der dann Master auf jedes "Feature" -Repo drücken wird, das Sie wollen
  • haben einen Post-Receive-Hook pro Feature-Repo, um zu beginnen:
    • eine Rückstufung Ihres Feature-Zweigs über den Master (in Ordnung, wenn Sie Ihren Feature-Zweig noch nicht an anderer Stelle verschoben haben)
    • oder eine Zusammenführung von Master in Ihrem Feature-Zweig.

Sie müssen immer noch zu Ihrem Feature-Repo gehen und prüfen, ob die Rebase oder die Zusammenführung aufgrund einiger Zusammenführungskonflikte nicht blockiert ist.

    
VonC 24.02.2010, 22:07
quelle
4

Wenn

  1. die Zweige, in die die letzten Master-Commits eingefügt werden sollen, werden nicht veröffentlicht UND
  2. Sie möchten, dass alle Commits im Master in den anderen Zweigen sind

Dann könnten Sie sie einfach auf den Master umbuchen, nachdem der Master aktualisiert wurde. Dieses kleine Skript funktioniert möglicherweise, wenn Sie eine Unix-Shell verwenden. Es macht jede Verzweigung auf Master zurück.

%Vor%     
Frerich Raabe 25.02.2010 11:30
quelle
0

Ich mache folgendes:

for BRANCH in $(ls git/refs/heads); do git checkout $BRANCH ; git merge origin/master $BRANCH ; done

    
3manuek 08.04.2016 23:31
quelle

Tags und Links