Ich verwende seit einigen Monaten ein lokales Git-Repository, das mit dem CVS-Repository meiner Gruppe interagiert. Ich habe eine fast neurotische Anzahl von Zweigen gemacht, von denen die meisten dankenswerterweise wieder in meinen Kofferraum übergegangen sind. Aber das Benennen wird langsam zu einem Problem. Wenn ich eine Aufgabe habe, die leicht mit einem einfachen Etikett benannt werden kann, die ich jedoch in drei Schritten erledige, die jeweils eine eigene Verzweigungs- und Zusammenführungssituation enthalten, kann ich den Zweignamen jedes Mal wiederholen, was die Geschichte jedoch etwas verwirrend macht. Wenn ich in den Namen spezifischer werde, mit einer separaten Beschreibung für jede Stufe, werden die Zweignamen lang und unhandlich.
Ich habe hier durch alte Threads gelernt, dass ich anfangen kann, Zweige mit einem / im Namen zu benennen, dh Thema / Aufgabe oder so etwas. Ich kann damit anfangen und sehen, ob es hilft, die Dinge besser zu organisieren.
Was sind einige Best Practices für die Benennung von Git-Zweigen?
Bearbeiten: Niemand hat tatsächlich Namenskonventionen vorgeschlagen. Ich lösche Zweige, wenn ich damit fertig bin. Ich habe zufällig mehrere in der Nähe, weil das Management meine Prioritäten ständig anpasst. :) Als Beispiel dafür, warum ich möglicherweise mehr als einen Zweig für eine Aufgabe benötige, nehmen wir an, ich muss den ersten diskreten Meilenstein in der Aufgabe an das CVS-Repository der Gruppe übergeben. Zu diesem Zeitpunkt würde ich aufgrund meiner unvollständigen Interaktion mit CVS dieses Commit ausführen und dann diesen Zweig beenden. (Ich habe zu viel Verrücktheit bei der Interaktion mit CVS gesehen, wenn ich zu diesem Zeitpunkt weiterhin denselben Zweig verwenden möchte.)
quelle
KEY-1234/allow-users-to-do-smart-stuff
Antworten:
Hier sind einige von mir verwendete Namenskonventionen für Zweige und die Gründe dafür
Namenskonventionen für Zweige
Gruppentoken
Verwenden Sie "Gruppierungs" -Token vor Ihren Filialnamen.
Die Gruppen können beliebig benannt werden, um Ihrem Workflow zu entsprechen. Ich verwende gerne kurze Substantive für meine. Lesen Sie weiter für mehr Klarheit.
Kurze, gut definierte Token
Wählen Sie kurze Token, damit nicht jeder Ihrer Filialnamen zu stark verrauscht wird. Ich benutze diese:
Mit jedem dieser Token können Sie feststellen, zu welchem Teil Ihres Workflows jeder Zweig gehört.
Es hört sich so an, als hätten Sie mehrere Zweige für verschiedene Zyklen einer Änderung. Ich weiß nicht, was Ihre Zyklen sind, aber nehmen wir an, sie sind "neu", "testen" und "verifiziert". Sie können Ihre Zweige mit abgekürzten Versionen dieser Tags benennen, die immer gleich geschrieben sind, um sie zu gruppieren und Sie daran zu erinnern, in welcher Phase Sie sich befinden.
Sie können schnell feststellen, welche Zweige die einzelnen Phasen erreicht haben, und Sie können sie mithilfe der Git-Mustervergleichsoptionen einfach zu Gruppen zusammenfassen.
Verwenden Sie Schrägstriche, um Teile zu trennen
Sie können fast jedes Trennzeichen in Zweignamen verwenden, aber ich finde Schrägstriche am flexibelsten. Möglicherweise bevorzugen Sie Striche oder Punkte. Mit Schrägstrichen können Sie jedoch beim Umschalten oder Abrufen von / zu einer Fernbedienung einige Zweige umbenennen.
Für mich funktionieren Schrägstriche auch besser für die Tab-Erweiterung (Befehlsvervollständigung) in meiner Shell. So wie ich es konfiguriert habe, kann ich nach Zweigen mit verschiedenen Unterteilen suchen, indem ich die ersten Zeichen des Teils eingebe und die TAB-Taste drücke. Zsh gibt mir dann eine Liste von Zweigen, die dem Teil des von mir eingegebenen Tokens entsprechen. Dies funktioniert sowohl für vorangegangene als auch für eingebettete Token.
(Zshell ist in Bezug auf die Befehlsvervollständigung sehr konfigurierbar und ich könnte es auch so konfigurieren, dass Bindestriche, Unterstriche oder Punkte auf die gleiche Weise behandelt werden. Aber ich entscheide mich dagegen.)
Außerdem können Sie in vielen Git-Befehlen wie folgt nach Zweigen suchen:
Vorsichtsmaßnahme: Wie Slipp in den Kommentaren hervorhebt, können Schrägstriche Probleme verursachen. Da Zweige als Pfade implementiert sind, können Sie keinen Zweig mit dem Namen "foo" und keinen anderen Zweig mit dem Namen "foo / bar" haben. Dies kann für neue Benutzer verwirrend sein.
Verwenden Sie keine bloßen Zahlen
Verwenden Sie keine bloßen Zahlen (oder Hex-Zahlen) als Teil Ihres Zweigbenennungsschemas. Innerhalb der Tab-Erweiterung eines Referenznamens kann git entscheiden, dass eine Zahl Teil eines sha-1 anstelle eines Verzweigungsnamens ist. Zum Beispiel benennt mein Issue-Tracker Fehler mit Dezimalzahlen. Ich nenne meine verwandten Zweige CRnnnnn und nicht nur nnnnn, um Verwirrung zu vermeiden.
Wenn ich versuchen würde, nur 15032 zu erweitern, wäre git unsicher, ob ich nach SHA-1- oder Filialnamen suchen möchte, und meine Auswahl wäre etwas eingeschränkt.
Vermeiden Sie lange beschreibende Namen
Lange Filialnamen können sehr hilfreich sein, wenn Sie sich eine Liste von Filialen ansehen. Beim Betrachten von dekorierten einzeiligen Protokollen kann dies jedoch stören, da die Zweignamen den größten Teil der einzelnen Zeile verschlingen und den sichtbaren Teil des Protokolls abkürzen können.
Auf der anderen Seite können lange Zweignamen bei "Commits zusammenführen" hilfreicher sein, wenn Sie sie nicht gewöhnlich von Hand neu schreiben. Die Standard-Merge-Commit-Nachricht lautet
Merge branch 'branch-name'
. Möglicherweise ist es hilfreicher, Zusammenführungsnachrichten alsMerge branch 'fix/CR15032/crash-when-unformatted-disk-inserted'
nur anzuzeigenMerge branch 'fix/CR15032'
.quelle
bug/20574/frabnotz-finder
undbug/20424
ist, dass Sie, sobald Sie ohne Sub-Token beginnen, später keine mehr hinzufügen können und umgekehrt. EG: Wenn Sie einenbug/20424
Zweig erstellen , können Siebug/20424/additional-fixing
später keinen Zweig erstellen (es sei denn, Sie löschen denbug/20424
Zweig). Wennbug/20574/frabnotz-finder
es sich bereits um einen Zweig handelt, können Sie keinenbug/20574
Zweig erstellen . In solchen Fällen verwende ich entweder ein Trennzeichen ohnebug/20574_frabnotz-finder
Sub-Token (zbug/20424/main
. B. ) oder wähle einen Standardnamen für das Sub-Token (z . B. ).feature
Gruppe und einebug
Gruppe, erweiterbar um zu zeigenfoo
,bar
Tags für die ehemaligen und eine20574
,20592
Gruppen und20424
,21334
Tags für die letztere.git branch -a
und Erhaltenremotes/origin/master
usw. Wenn ich sehe, dass Git mir von einem Zweig erzählt, verwende ich keine Schrägstriche. Wenn ich also einen sehe, weiß ich, dass es sich um eine "spezielle" Referenz handelt.Ein erfolgreiches Git-Verzweigungsmodell von Vincent Driessen hat gute Vorschläge. Ein Bild ist unten. Wenn Ihnen dieses Verzweigungsmodell zusagt, ziehen Sie die Flusserweiterung auf git in Betracht . Andere haben über Flow kommentiert
Driessens Modell beinhaltet
Ein Hauptzweig, der nur zur Freigabe verwendet wird. Typischer Name
master
.Ein "Entwicklungs" -Zweig aus diesem Zweig. Das ist diejenige, die für die meisten Hauptarbeiten verwendet wird. Allgemein benannt
develop
.Verzweigungen mit mehreren Features aus dem Entwicklungszweig. Name basierend auf dem Namen der Funktion. Diese werden wieder zu Develop zusammengeführt, nicht zu Master- oder Release-Zweigen.
Release-Zweig für Kandidaten-Releases mit nur Fehlerkorrekturen und keinen neuen Funktionen. Typischer Name
rc1.1
.Hotfixes sind kurzlebige Zweige für Änderungen, die vom Master stammen und ohne Beteiligung des Entwicklungszweigs in den Master übernommen werden.
quelle
Meine persönliche Präferenz ist es, den Filialnamen zu löschen, nachdem ich mit einem Themenzweig fertig bin.
Anstatt zu versuchen, den Zweignamen zu verwenden, um die Bedeutung des Zweigs zu erläutern, beginne ich die Betreffzeile der Festschreibungsnachricht im ersten Festschreiben für diesen Zweig mit "Verzweigung:" und füge weitere Erläuterungen in den Nachrichtentext ein, wenn der Betreff gibt mir nicht genug platz.
Der von mir verwendete Zweigname ist lediglich ein Handle, um auf einen Themenzweig zu verweisen, während ich daran arbeite. Sobald die Arbeit am Thema Zweig abgeschlossen ist, werde ich den Zweignamen entfernen und manchmal das Commit zur späteren Bezugnahme markieren.
Das macht die Ausgabe
git branch
auch nützlicher: Es werden nur langlebige Zweige und aktive Themenzweige aufgelistet, nicht alle Zweige jemals.quelle
Ich habe verschiedene Schemata gemischt und aufeinander abgestimmt, die ich gesehen habe und die auf den von mir verwendeten Werkzeugen basieren.
Mein vollständiger Filialname wäre also:
was bedeuten würde:
Die Teile werden durch Schrägstriche getrennt, da diese in SourceTree zur einfachen Organisation als Ordner interpretiert werden. Wir verwenden Jira für die Problemverfolgung, sodass die Angabe der Nummer das Nachschlagen im System erleichtert. Das Einschließen dieser Nummer macht es auch durchsuchbar, wenn versucht wird, dieses Problem in Github zu finden, wenn versucht wird, eine Pull-Anfrage zu senden.
quelle
name/feature/issue-tracker-number-short-description
Warum sind für jede Aufgabe drei Zweige / Zusammenführungen erforderlich? Können Sie mehr darüber erklären?
Wenn Sie ein Fehlerverfolgungssystem verwenden, können Sie die Fehlernummer als Teil des Filialnamens verwenden. Dadurch bleiben die Zweignamen eindeutig, und Sie können ihnen ein oder zwei kurze und beschreibende Wörter voranstellen, damit sie für den Menschen lesbar bleiben
"ResizeWindow-43523"
. Dies erleichtert auch die Bereinigung von Zweigen, da Sie den zugehörigen Fehler nachschlagen können. So benenne ich normalerweise meine Filialen.Da diese Zweige schließlich wieder mit dem Master zusammengeführt werden, sollten Sie sie nach dem Zusammenführen sicher löschen. Sofern Sie nicht mit verschmelzen
--squash
, bleibt der gesamte Verlauf der Niederlassung bestehen, falls Sie ihn jemals benötigen sollten.quelle
Beachten Sie, dass Sie, wie im Commit e703d7 oder Commit b6c2a0d (März 2014), jetzt Teil von Git 2.0, dargestellt, eine andere Namenskonvention finden (die Sie auf Zweige anwenden können).
Ein Filialname darf kein Leerzeichen enthalten (siehe " Welche Zeichen sind in einem Filialnamen unzulässig? " Und
git check-ref-format
Manpage ).Für jeden Zweignamen, der durch einen Mehrwortausdruck dargestellt wird,
-
ist es daher eine gute Idee , ein ' ' (Bindestrich) als Trennzeichen zu verwenden.quelle
Dem Vorschlag von farktronix folgend, haben wir Jira-Ticketnummern für ähnliche Mercurial-Nummern verwendet, und ich plane, sie weiterhin für Git-Filialen zu verwenden. Aber ich denke, die Ticketnummer selbst ist wahrscheinlich eindeutig genug. Während es hilfreich sein kann, ein beschreibendes Wort im Zweignamen zu haben, wie farktronix feststellte, möchten Sie wahrscheinlich weniger eingeben, wenn Sie häufig genug zwischen Zweigen wechseln. Wenn Sie dann den Filialnamen kennen müssen, suchen Sie in Jira nach den zugehörigen Schlüsselwörtern im Ticket, wenn Sie ihn nicht kennen. Außerdem sollten Sie die Ticketnummer in jeden Kommentar aufnehmen.
Wenn Ihr Zweig eine Version darstellt, scheint es üblich zu sein, das Format xxx (Beispiel: "1.0.0") für Zweignamen und vx.xx (Beispiel "v1.0.0") für Tag-Namen zu verwenden (um Konflikte zu vermeiden). . Siehe auch: Gibt es eine Standard-Namenskonvention für Git-Tags?
quelle
v1.2.4
Zweig schließlich zu einem Endpunkt mit einemv1.2.4
Tag führt (gehe ich zu Recht davon aus, dass Sie in diesem Fall sowohl Zweige als auch Tags nach einer Version benennen) , spielt dies dann eine Rolle? Das Tag kann weiterhin unterrefs/tags/v1.2.4
und der Zweig unter erreicht werdenrefs/heads/v1.2.4
, und es scheint, dass Git den Tag-Namen bevorzugt, wenn er nicht eindeutig ist (mit einer Warnung).