Ecco alcune convenzioni di denominazione delle filiali che utilizzo e le relative ragioni
Convenzioni di denominazione delle filiali
- Usa i token di raggruppamento (parole) all'inizio dei nomi delle filiali.
- Definire e utilizzare token di lead brevi per differenziare i rami in modo significativo per il flusso di lavoro.
- Usa le barre per separare parti dei nomi delle filiali.
- Non utilizzare numeri nudi come parti iniziali.
- Evitare nomi descrittivi lunghi per rami di lunga durata.
Token di gruppo
Usa i token di "raggruppamento" davanti ai nomi delle tue filiali.
group1/foo
group2/foo
group1/bar
group2/bar
group3/bar
group1/baz
I gruppi possono essere nominati come preferisci per adattarli al tuo flusso di lavoro. Mi piace usare nomi brevi per i miei. Continua a leggere per maggiore chiarezza.
Brevi token ben definiti
Scegli i token brevi in modo che non aggiungano troppo rumore a ciascuno dei nomi delle tue filiali. Io uso questi:
wip Works in progress; stuff I know won't be finished soon
feat Feature I'm adding or expanding
bug Bug fix or experiment
junk Throwaway branch created to experiment
Ognuno di questi token può essere utilizzato per indicare a quale parte del flusso di lavoro appartiene ogni ramo.
Sembra che tu abbia più rami per diversi cicli di un cambiamento. Non so quali siano i tuoi cicli, ma supponiamo che siano "nuovi", "test" e "verificati". Puoi nominare i tuoi rami con versioni abbreviate di questi tag, scritti sempre allo stesso modo, sia per raggrupparli che per ricordarti in quale fase ti trovi.
new/frabnotz
new/foo
new/bar
test/foo
test/frabnotz
ver/foo
Puoi dire rapidamente quali rami hanno raggiunto ogni diverso stadio e puoi raggrupparli facilmente usando le opzioni di corrispondenza dei pattern di Git.
$ git branch --list "test/*"
test/foo
test/frabnotz
$ git branch --list "*/foo"
new/foo
test/foo
ver/foo
$ gitk --branches="*/foo"
Usa le barre per separare le parti
Puoi usare quasi tutti i delimitatori che ti piacciono nei nomi delle filiali, ma trovo che le barre siano le più flessibili. Potresti preferire utilizzare trattini o punti. Ma le barre consentono di rinominare i rami quando si spinge o si preleva da / verso un telecomando.
$ git push origin 'refs/heads/feature/*:refs/heads/phord/feat/*'
$ git push origin 'refs/heads/bug/*:refs/heads/review/bugfix/*'
Per me, anche le barre funzionano meglio per l'espansione delle schede (completamento del comando) nella mia shell. Il modo in cui l'ho configurato posso cercare rami con diverse sotto-parti digitando i primi caratteri della parte e premendo il tasto TAB. Zsh mi dà quindi un elenco di rami che corrispondono alla parte del token che ho digitato. Funziona con i token precedenti e quelli incorporati.
$ git checkout new<TAB>
Menu: new/frabnotz new/foo new/bar
$ git checkout foo<TAB>
Menu: new/foo test/foo ver/foo
(Zshell è molto configurabile per il completamento del comando e potrei anche configurarlo per gestire trattini, trattini bassi o punti allo stesso modo. Ma ho scelto di non farlo.)
Ti permette anche di cercare rami in molti comandi git, in questo modo:
git branch --list "feature/*"
git log --graph --oneline --decorate --branches="feature/*"
gitk --branches="feature/*"
Avvertenza: come sottolinea Slipp nei commenti, le barre possono causare problemi. Poiché i rami sono implementati come percorsi, non è possibile avere un ramo chiamato "foo" e un altro ramo chiamato "foo / bar". Questo può essere fonte di confusione per i nuovi utenti.
Non usare numeri nudi
Non utilizzare numeri nudi (o numeri esadecimali) come parte dello schema di denominazione delle filiali. All'interno dell'espansione di tabulazione di un nome di riferimento, git può decidere che un numero fa parte di uno sha-1 anziché un nome di ramo. Ad esempio, il mio tracker di problemi nomina i bug con numeri decimali. Nomino i miei rami correlati CRnnnnn piuttosto che semplicemente nnnnn per evitare confusione.
$ git checkout CR15032<TAB>
Menu: fix/CR15032 test/CR15032
Se provassi ad espandere solo 15032, git non sarebbe sicuro se volevo cercare i nomi di SHA-1 o dei rami e le mie scelte sarebbero alquanto limitate.
Evita nomi descrittivi lunghi
I nomi di rami lunghi possono essere molto utili quando si guarda un elenco di rami. Ma può interferire quando si esaminano i registri di una riga decorati poiché i nomi dei rami possono assorbire la maggior parte della singola riga e abbreviare la parte visibile del registro.
D'altra parte, i nomi di rami lunghi possono essere più utili nei "commit di unione" se non li riscrivi abitualmente a mano. Il messaggio di commit di unione predefinito è Merge branch 'branch-name'
. Potresti trovare più utile visualizzare i messaggi di unione come Merge branch 'fix/CR15032/crash-when-unformatted-disk-inserted'
anziché semplicemente Merge branch 'fix/CR15032'
.