Was ist ein Git-Themenzweig?

135

Was ist ein Git-Themenzweig? Unterscheidet es sich in irgendeiner Weise von einem gewöhnlichen Zweig? Gibt es Zweige, die keine Themenzweige sind?

Skiphoppy
quelle

Antworten:

112

Themenzweige sind in der Regel einfache Zweige, die Sie lokal erstellen und deren Name für Sie von Bedeutung ist . In diesen Fällen können Sie möglicherweise an einer Fehlerbehebung oder einem Feature (sie werden auch als Feature-Zweige bezeichnet) arbeiten, deren Fertigstellung voraussichtlich einige Zeit in Anspruch nehmen wird.

Ein anderer Zweigtyp ist der "Remote-Zweig" oder "Remote-Tracking-Zweig". Diese Art von Zweig folgt der Entwicklung der Arbeit eines anderen und wird in Ihrem eigenen Repository gespeichert. Sie aktualisieren diesen Zweig regelmäßig (mit git fetch), um zu verfolgen, was an anderer Stelle passiert. Wenn Sie bereit sind, die Änderungen aller anderen nachzuholen, können Sie sie git pullsowohl abrufen als auch zusammenführen.

Ich habe auch eine andere Art von Zweig gesehen, der im Wesentlichen ein völlig separater Baum von Dateien im selben Repository ist. Zum Beispiel kann die Git - Repository selbst enthält Köpfe namens Menschen und html , die ganz andere Inhalte aus dem enthalten Master - Zweig. Ich weiß nicht, wie diese Arten von Zweigen normalerweise genannt werden.

Greg Hewgill
quelle
6
Ich suchte nach Möglichkeiten,
Nicolas
1
In Bezug auf den separaten Baum glaube ich, dass sie manchmal als verwaister Zweig bezeichnet werden, ähnlich wie Github empfiehlt , eine Github-Seite manuell zu erstellen
maximal
1
Warum muss ein Themenzweig lokal sein? Es gibt keinen Grund zu der Annahme, dass Sie einen Themenzweig nicht verschieben möchten. In ähnlicher Weise können andere Entwickler ihre eigenen Themenzweige erstellen, und Sie möchten sie möglicherweise abrufen. Diese Antwort scheint zwei völlig unabhängige Eigenschaften von Zweigen zu verwechseln: Ob ein Zweig lokal ist oder nicht, hängt überhaupt nicht damit zusammen, ob es sich um einen Themenzweig handelt.
Jean-Paul Calderone
@ Jean-PaulCalderone: Ich glaube nicht, dass ich gesagt habe , dass Themenzweige lokal sein müssen. Sie können einen Themenzweig natürlich remote verfolgen, wenn mehr als ein Entwickler daran arbeitet.
Greg Hewgill
2
Ich denke, die Antwort impliziert es. Warum ist "... dass Sie lokal erstellen ..." und "... haben einen Namen, der für Sie von Bedeutung ist." ein wesentlicher Teil dessen, was einen "Themenzweig" ausmacht? Der erste Satz Ihrer Antwort deutet stark darauf hin, dass dies wichtige Merkmale eines Themenzweigs sind, aber tatsächlich beide orthogonal zur "Thematik" eines Zweigs sind oder nicht. Der folgende Abschnitt, in dem Sie "Remote-Zweige" beschreiben, bekräftigt die Idee, dass der "lokal erstellte" Teil eines Themenzweigs wichtig ist. Ich schlage vor, diese Antwort neu zu fokussieren, um diese nicht verwandten Zweigmerkmale hervorzuheben.
Jean-Paul Calderone
80

Es ist kein Fachbegriff; Es bezieht sich nur auf einen Zweig, der erstellt wurde, um eine bestimmte Funktion zu implementieren oder einen Fehler zu beheben. Das "Thema" ist im Wesentlichen der Grund für die Schaffung der Niederlassung.

Mipadi
quelle
2
ja. im Gegensatz zu einem persönlichen Zweig, in dem Sie Zweige haben: Bob, Alice, Matte usw.
Webmat
... also sind Themenzweig und Feature-Zweig dasselbe, richtig?
Betlista
@ Betlista Mehr oder weniger ja.
Mipadi
28

https://github.com/dchelimsky/rspec/wiki/Topic-Branches erklärt dies gut:

Ein "Thema" -Zweig ist ein separater Zweig, den Sie verwenden, wenn Sie an einem einzelnen "Thema" arbeiten (eine Fehlerbehebung, eine neue Funktion oder eine experimentelle Idee). Es wird empfohlen, an einem Themenzweig anstatt direkt über „Master“ zu arbeiten, weil:

{... Link besuchen ...}

Aus all diesen Gründen wird empfohlen, einen Themenzweig zum Vorbereiten von Einsendungen zu verwenden, selbst für einfache Beiträge wie Single-Commit-Bugfixes und dergleichen.

Dieses Beispiel enthält auch Beispiele. Was mich tatsächlich zum Nachdenken brachte, ist wahrscheinlich das, was die meisten Geschäfte bereits tun. Alle agilen Projekte, mit denen ich je zusammengearbeitet habe. Ich habe das "Es ist kein Fachbegriff" positiv bewertet, weil ich das Gefühl habe, dass dies den Nagel auf den Kopf trifft.

Jeff Ancel
quelle
4

Es sieht so aus, als ob die bekannteste und wichtigste Art von Zweigen, die keine Themenzweige sind, die Veröffentlichung von Zweigen in einem großen, öffentlich verfügbaren Repository wäre, oder?

Das ist wahrscheinlich richtig für Sie, aber es geht um Sie und das Projekt, über das Sie nachdenken. es wird nicht von Git bestimmt.

Die meisten Versionskontrollsysteme (insbesondere zentralisierte) schreiben einen bestimmten Workflow vor oder erzwingen ihn, einschließlich dessen, wofür die Verwendung eines Zweigs sinnvoll ist. Git (und zu einem gewissen Grad die meisten verteilten VCSs) sind der Ansicht, dass der Workflow, für welche Zweige verwendet wird, wann festgeschrieben werden muss, für welche unterschiedlichen Repos verwendet wird usw. von den Benutzern und Vereinbarungen zwischen den Benutzern (Richtlinien) ausgewählt wird. Git setzt diese also technisch nicht durch.

Dies ist eines der Dinge, die es mir schwer gemacht haben, Git zu lernen. Oliver Steele erklärte dies aus Sicht des Benutzers und schrieb über Commit-Richtlinien .

Paul
quelle