2012-04-04 19 views
26

Ich bin etwas neu in der Versionskontrolle mit GIT. Ich lese dieses Guide und befolge den grundlegenden Ansatz, der im Diagramm HERE gezeigt wird. Dennoch habe ich einige Zweifel darüber, wie ich git-Zweige verwenden kann, um die Entwicklung neuer Features vom vorhandenen Code zu trennen.Wie git und Zweige richtig zu verwenden

Hier ist ein Beispiel. Nehmen wir an, am Anfang, mein Repository die folgenden zwei Hauptzweige enthält:

  • Master-Zweig (mit der Release-Version)
  • Entwickeln Branch (neuen Updates oder Funktionen enthalten, um sie von bestehenden Projekt Funktionen zu trennen)

Wenn ich neue Funktionen oder Module entwickeln muss, erstelle ich Zweige von Develop und starte die neuen Code-Projekte dort. Zum Beispiel mache ich drei neue Zweige, um Funktionen hinzuzufügen, die sich auf Sun, Star und SuperNova beziehen. Nun, mein Repository enthält fünf Zweige:

  • Master-Zweig: Release 1.0.0
  • Entwickeln Zweig: Änderung nach Release 1.0.0
  • NewModule_Sun Zweig: So fügen Sie zu projizieren (Erstellen von Zweig Develop)
  • NewModule_Star Zweig: star hinzufügen (erstellen von Zweig Develop) zu projizieren
  • NewModule_SuperNova Zweig: Supernova hinzufügen
zum Projekt (von Develop Zweig erstellen)

Für Release 1.0.1 möchte ich die Module Sun und Star, aber nicht 10 einbeziehen. So verschmelzen ich sie entwickeln mit und dann mit der Release-Entwicklung verschmelzen:

  1. NewModule_Sun Merge in Entwickeln
  2. NewModule_Star Merge in Entwickeln
  3. Merge Entwickeln in Master (Release 1.0.1)

Der Zweig Entwickeln muss permanent beibehalten werden, aber die Zweige Sun und Star werden nicht mehr benötigt. Sie erhalten gelöscht:

  1. den Zweig NewModule_Sun löschen
  2. Löschen Sie die NewModule_Star Zweig

Nachdem diese Änderungen mein Repository die folgenden drei Zweige enthält:

  • Master-Zweig: Release 1.0. 1
  • Entwickeln Zweig: Änderung nach Version 1.0.1
  • NewModule_SuperNova-Zweig: Änderung nach Version 1.0.0 (erstellt von Develop, wenn es nicht mit dem Stern/Sun Filialen verschmolzen wurde)

==

Erstens bin ich mit Git Zweige richtig?

Zweitens habe ich die Geschichte der endgültigen Develop Zweig, und es scheint, dass ich einige Informationen über die NewModules verloren habe. Ist das normal? Und, ist es möglich, alle Verlaufsinformationen in den Zweig Entwicklung zu übertragen?

Vielen Dank !!

+1

Dies kann helfen. http://stackoverflow.com/questions/2613903/does-deleting-a-branch-in-git-remove-it-from-the-history – codef0rmer

Antwort

16

Mache ich eine proprietäre Verwendung von Git?

Ja der Workflow, den Sie beschreiben, ist ziemlich Standardarbeitsablauf. Sie erstellen einen Zweig, Sie arbeiten daran, und wenn Sie fertig sind, führen Sie ihn zusammen und entfernen den nicht benötigten Zweig (es sei denn, Sie entwickeln in diesem Zweig weiter).

Nach dem Entfernen eines Zweigs, Anzeigen der Geschichte scheint es mir, dass ich jede Information über den Zweig selbst verloren haben ... ist das normal?

Ja, das ist normal.

ist es möglich, eine Verzweigung zu entfernen, aber die Verlaufsinformation ungebrochen zu lassen?

Nicht sicher, was Sie hier meinen. Solange Sie den Zweig vor dem Löschen zusammengeführt haben, ist der Verlauf noch vorhanden. Sie haben es einfach in einen anderen Zweig eingefügt, und der Verlauf kann in diesem Zweig angezeigt werden. Es gibt keine Möglichkeit zu wissen, wann ein Zweig gelöscht wurde, wenn Sie danach gefragt werden.

+0

ah ok .. Ich war auf der Suche nach einem Weg (dass Sie mir gesagt haben, das ist unmöglich), um den Anfang und das Ende eines Zweigs zu sehen ... es ist schade :( – Marcx

+0

@Marcx Ich bin ein bisschen spät, aber vielleicht Sie suche noch diese Flagge "git merge --no-ff Branchname" –

9

Ich schlage vor, Sie lesen http://nvie.com/posts/a-successful-git-branching-model/, die ein gutes Muster für Git Verzweigung definiert.

Ich habe festgestellt, dass ich Entwicklungszweige für einen Zeitraum behalten, bis die Zeit den Änderungsverlauf, den Sie in den Überarbeitungen gemacht haben, nicht wert ist, zu behalten (ungefähr 6 Monate), und dann sie löscht.

+0

Ich lese das ... Ich benutze tatsächlich dieses System ... Es ist nicht meine Frage über die Löschung eines Zweiges erklärt ... das ist im Grunde mein Hauptzweifel :) – Marcx

+0

Danke. Als ein vollständiges n00b zu verzweigenden Paradigmen war Ihr Link genau das, was ich brauchte. –