Frage

Ich bin für die schreckliche Frage Titel so leid, aber ich werde versuchen, mich mehr verbosely ein wenig zu erklären:

Ich verwende Git (aber ich denke, die bestimmte Software nicht wirklich in diesem Fall egal) für mein Software-Projekt. Wie viele Projekte, ich plane verschiedene Versionen zu müssen. Wenn es eine Freigabe ist, würde ich wahrscheinlich zuordnen einen Tag begeht - zum Beispiel „1,0“. Die Zeit vergeht, und der Code wird gehackt, und schließlich gibt es eine Release, mit einem anderen Tag - diesmal „2.0“

.

Ein Tag bemerke ich ein schwerwiegender Fehler, dass in beiden Versionen vorhanden ist 1.0 und 2.0, und es muss festgelegt werden. Um die Dinge schwierig (und wahrscheinlich auch realistische), kann ich nicht nur fix it in der aktuellen Master / Stamm und davon ausgehen, jeder würde verwenden, dass, weil es einige rückwärts Inkompatibilitäten in 2.0 mit 1,0 ist und die Menschen sind faul und don ‚t wollen aktualisieren.

Also, was für eine gute Regelung wäre zu haben, um, diese Art von Verhalten zu unterstützen: der Lage, Veränderungen in älteren Versionen zu machen. Git scheint Tags mit Releases auf einer gewissen Ebene gleichzusetzen, da der Ausgang des git describe Befehl ( „[latest tag]-[commits since the tag]-[current commit hash]“). Ich kann wahrscheinlich nicht vermeiden Tags zusammen verwenden, dann.

Ich kann das Gefühl, dass eine Kombination von Tags und Zweige eine gute Idee wäre, aber aus irgendeinem Grund kann ich nicht wickeln, meinen Kopf um die Angaben mit dieser.

War es hilfreich?

Lösung

Sie wollen auf jeden Fall in mit einem Zweig für diese suchen. Git Unterstützung Zweige für diese Art von Entwicklung sehr gut.

Als Beispiel, Ihre lineare Version der Geschichte könnte wie folgt aussehen:

---A---B---C[1.0]---D---E---F[2.0]---G---H

Wenn Sie einen Fehler in 1.0 und wollen, um es zu beheben, können Sie nicht einfach einfügen ein neues Commit zwischen verpflichtet C und D. Also, Sie könnten einen Zweig wie folgt erstellen:

---A---B---C[1.0]---D---E---F[2.0]---G---H[2.1]
            \
             C1---C2[1.1]

Verpflichtet C1 und C2 das Problem in diesem Zweig beheben, wobei die Version 1.1 markieren können. Nehmen wir nun an Sie eine Änderung (G) in der Version 2.1 aus, die Sie auf Version 1.1 zurückzuportieren wollte dort die gleiche Änderung zu machen. Sie können git cherry-pick verwenden, um die folgenden Funktionen ausführen:

---A---B---C[1.0]---D---E---F[2.0]---G---H[2.1]
            \
             C1---C2[1.1]---G1[1.2]

Commit G1 bezieht G zu begehen außer es 2.0 auf Version 1.1 statt Version anwenden kann.

In diesen Beispielen werden die Zweige (zusätzliche Ströme der Entwicklung) sind das Schlüsselkonzept, während Tags nur eine bequeme Art und Weise sind, einen Namen zu machen, um den Staat des Projekt in zu einem bestimmten Zeitpunkt war zu verweisen. Git unterstützt viele andere Möglichkeiten des Zweig zu manipulieren, vor allem mit dem starken git rebase Befehl.

Andere Tipps

Sie benötigen einen Zweig - Sie werden auf einem Zweig Wartung Fehlerbehebung und Veröffentlichungen tun, die im Release-Tag beginnt, während der Weiterentwicklung auf dem Haupt (Master) Zweig weiter

.

Sie scheinen die meisten der Antwort zu haben bereits, wenn Sie Zweige und Tags erwähnen. Ein Tag ist es eine gewisse sogar zu markieren (wie ein Release) und Niederlassungen sind für die parallele Entwicklung. Die Aufrechterhaltung einer bestimmten Version wird in der Regel auf einem Zweig getan und Sie können mit Differenzmengen der meisten aktuellen VCS cherrypick von Kopf / Stamm in einen Zweig und umgekehrt einen bestimmten Bug-Fix zu importieren.

Sie können Kopf / Stamm / Master abarbeiten (was auch immer Sie „aktuelle“ Entwicklungszweig benannt ist) und Fehlerbehebung in Ihren verschiedenen Wartungs Zweige zusammenführen. Sobald Sie eine Haupt- oder Nebenversion getan haben, können Sie einen Zweig für die Wartung erstellen.

Es gibt viele Möglichkeiten zu erreichen, was Sie wollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top