Antwort

Kurz gesagt: Best Practice ist verzweigen, häufig zusammenführen und immer synchron bleiben .

Es gibt ziemlich klare Konventionen, wie Sie Ihren Code in einem vom Hauptzweig getrennten Zweig aufbewahren können:

  1. Sie sind dabei, größere oder störende Änderungen vorzunehmen.
  2. Sie sind dabei um einige Änderungen vorzunehmen, die möglicherweise nicht verwendet werden
  3. Sie möchten mit etwas experimentieren, von dem Sie nicht sicher sind, ob es funktioniert
  4. Wenn Sie aufgefordert werden, sich zu verzweigen, müssen andere möglicherweise etwas im Master tun.

Als Faustregel gilt, dass Sie nach dem Verzweigen mit dem Master synchron bleiben sollten Ast. Denn irgendwann müssen Sie es wieder zum Master zusammenführen. Um ein großes, kompliziertes Durcheinander von Konflikten beim Zusammenführen zu vermeiden, sollten Sie häufig festschreiben und häufig zusammenführen.

Gute Vorgehensweisen

Ein erfolgreiches Git-Verzweigungsmodell von Vincent Driessen hat gute Vorschläge. Wenn Ihnen dieses Verzweigungsmodell gefällt, ziehen Sie die Flow-Erweiterung für git in Betracht. Andere haben Kommentare zum Ablauf abgegeben.

Tagging-Praktiken

Wie Sie bereits wissen, gibt Git Ihnen Commit-IDs wie 1.0 -2-g1ab3183 aber das sind keine Tags! Das Taggen erfolgt mit dem Git-Tag, und die Tags, die mit dem Git-Tag erstellt werden, sind die Basis für die Commit-IDs, die git beschreiben erstellt. Mit anderen Worten, in Git werden keine Zweige markiert. Sie markieren Commits. Es ist richtig zu sagen, dass das Tag nur ein kommentierter Zeiger auf ein Commit ist.

Schauen wir uns ein praktisches Beispiel an, das dies demonstriert hat.

 /-- [v1.0] v ---.---.---.---S---.---A <-- master \ \-.---B <-- test 

Lassen Sie uns „S“ festschreiben, indem Sie auf das Tag „v1.0“ verweisen. Dieses Commit erfolgt sowohl im Zweig „Master“ als auch im Zweig „Test“. Wenn Sie " ausführen, beschreiben Sie " über Commit “ Ein „(oben im“ Master „-Zweig) würde so etwas wie v1.0-2-g9c116e9 erhalten. Wenn Sie " git beschreiben " über Commit „B“ (auch bekannt als „Test“ -Zweig) ausführen, erhalten Sie so etwas wie v1.0-2-g3f55e41, das ist bei der Standardkonfiguration von git-description der Fall. Beachten Sie, dass dieses Ergebnis etwas anders ist. v1.0-2-g9c116e9 bedeutet, dass wir mit der verkürzten SHA-1-ID 9c116e9 festschreiben, 2 Commits nach dem Tag v1.0. Es gibt kein Tag v1.0-2!

Wenn Ihr Tag nur im Zweig „master“ angezeigt werden soll, können Sie ein neues Commit erstellen (z. B. nur Standard / Fallback aktualisieren) Versionsinformationen in GIT-VERSION-FILE) nach dem Verzweigungspunkt der „Test“ -Verzweigung. Wenn Sie Commits im Zweig „Test“ mit z. „v1.0.3` wäre nur in“ test „sichtbar.

Referenzen

Ich habe viele, viele nützliche Blogs und Beiträge gefunden, aus denen ich lernen kann sind professionell illustriert sind selten. Daher möchte ich einen Beitrag empfehlen – Ein erfolgreiches Git-Verzweigungsmodell von @nvie. Ich habe seine Illustration ausgeliehen 🙂

Geben Sie hier die Bildbeschreibung ein.

Kommentare

  • 1.0-2-g1ab3183 ist ein von git konstruierter Bezeichner, der aus den von git verfügbaren Informationen beschrieben wird, aber es ist etwas zu viel, ihn als git-Bezeichner zu bezeichnen. Git identifiziert sich durch SHA-Hash; Tags und Zweige sind menschliche Konstrukte, die git hilfreich verfolgt Wenn Sie glauben, dass ein Mensch eines Tages ein geeignetes Lesezeichen für ein Commit finden möchte.
  • eine wunderbare Illustration der Mehrdimensionalität im Git-Universum. Schön. Danke.
  • Es lohnt sich unter Hinweis darauf, dass viele Projekte einige nicht benötigen der in diesem Diagramm gezeigten Fahrspuren. Einige Projekte benötigen nur das, was ' als Entwickeln und Feature bezeichnet wird. Dies gilt häufig für Web-Apps, die nach Belieben bereitgestellt werden können.
  • Selbst der Autor von git flow empfiehlt dies nicht mehr für viele Projekttypen, z. B. die Webentwicklung. Viele Leute glauben, dass es viel komplexer ist, als die überwiegende Mehrheit der Projekte benötigt, was die Ausführung mühsam macht und leicht zu Fehlern führt.Am anderen Ende des Spektrums befürworten einige fortgeschrittene Praktiker, dass Teams die ' trunkbasierte Entwicklung ' verwenden, bei der fast nie Zweige verwendet werden. und liefern solche erfolgreichen Projekte. Betrachten Sie für etwas Zwischenprodukt " Anti-Gitflow '

Antwort

Ein Zweig wird verwendet, wenn Sie zwei verschiedene Versionen des Repositorys gleichzeitig haben. Ein Tag ist eine Möglichkeit, einen Zeitpunkt in Ihrem Repository zu markieren.

Sie sollten ein Tag hinzufügen, um eine freigegebene Version zu markieren. Wenn Sie dann Fehlerbehebungen an dieser Version vornehmen müssen, erstellen Sie einen Zweig am Tag.

Sie möchten nur Zweige löschen, die wieder in den HEAD [oder einen anderen Zweig] zusammengeführt wurden.

Kommentare

  • oh … und ich nehme an, Sie meinen, dass der Zweig mit einem anderen Zweig wie Master zusammengeführt wird. HEAD bewegt sich jedes Mal, wenn ich eine Kasse mache, richtig?
  • HEAD zeigt normalerweise auf einen Zweig (es sei denn, Sie ' befinden sich im getrennten HEAD-Modus), also bewegt sich HEAD mit der Zweig, auf den es zeigt

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.