Berikut adalah beberapa konvensi penamaan cabang yang saya gunakan dan alasannya
Konvensi penamaan cabang
- Gunakan token pengelompokan (kata-kata) di awal nama cabang Anda.
- Tentukan dan gunakan token timah pendek untuk membedakan cabang dengan cara yang berarti bagi alur kerja Anda.
- Gunakan garis miring untuk memisahkan bagian dari nama cabang Anda.
- Jangan gunakan angka telanjang sebagai komponen utama.
- Hindari nama deskriptif yang panjang untuk cabang yang berumur panjang.
Token grup
Gunakan token "pengelompokan" di depan nama cabang Anda.
group1/foo
group2/foo
group1/bar
group2/bar
group3/bar
group1/baz
Grup dapat diberi nama apa pun yang Anda suka agar sesuai dengan alur kerja Anda. Saya suka menggunakan kata benda pendek untuk kata benda saya. Baca terus untuk kejelasan lebih lanjut.
Token pendek yang terdefinisi dengan baik
Pilih token pendek sehingga mereka tidak menambahkan terlalu banyak suara ke setiap nama cabang Anda. Saya menggunakan ini:
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
Setiap token ini dapat digunakan untuk memberi tahu Anda bagian mana dari alur kerja Anda yang dimiliki masing-masing cabang.
Sepertinya Anda memiliki banyak cabang untuk siklus perubahan yang berbeda. Saya tidak tahu apa siklus Anda, tetapi anggaplah mereka 'baru', 'pengujian' dan 'diverifikasi'. Anda dapat memberi nama cabang Anda dengan versi singkat dari tag ini, selalu dieja dengan cara yang sama, untuk mengelompokkan mereka dan untuk mengingatkan Anda di tahap mana Anda berada.
new/frabnotz
new/foo
new/bar
test/foo
test/frabnotz
ver/foo
Anda dapat dengan cepat memberi tahu cabang mana yang telah mencapai setiap tahap yang berbeda, dan Anda dapat mengelompokkannya dengan mudah menggunakan opsi pencocokan pola Git.
$ git branch --list "test/*"
test/foo
test/frabnotz
$ git branch --list "*/foo"
new/foo
test/foo
ver/foo
$ gitk --branches="*/foo"
Gunakan garis miring untuk memisahkan bagian-bagian
Anda dapat menggunakan hampir semua pembatas yang Anda suka dalam nama cabang, tetapi saya menemukan garis miring menjadi yang paling fleksibel. Anda mungkin lebih suka menggunakan tanda hubung atau titik. Tapi garis miring memungkinkan Anda melakukan penggantian nama cabang saat mendorong atau mengambil ke / dari remote.
$ git push origin 'refs/heads/feature/*:refs/heads/phord/feat/*'
$ git push origin 'refs/heads/bug/*:refs/heads/review/bugfix/*'
Bagi saya, garis miring juga berfungsi lebih baik untuk ekspansi tab (penyelesaian perintah) di shell saya. Cara saya mengonfigurasinya, saya dapat mencari cabang dengan berbagai sub-bagian dengan mengetik karakter pertama dari bagian itu dan menekan tombol TAB. Zsh kemudian memberi saya daftar cabang yang cocok dengan bagian token yang saya ketik. Ini berfungsi untuk token sebelumnya dan juga yang tertanam.
$ git checkout new<TAB>
Menu: new/frabnotz new/foo new/bar
$ git checkout foo<TAB>
Menu: new/foo test/foo ver/foo
(Zshell sangat bisa dikonfigurasi tentang penyelesaian perintah dan saya juga bisa mengkonfigurasinya untuk menangani tanda hubung, menggarisbawahi atau titik dengan cara yang sama. Tapi saya memilih untuk tidak.)
Ini juga memungkinkan Anda mencari cabang di banyak perintah git, seperti ini:
git branch --list "feature/*"
git log --graph --oneline --decorate --branches="feature/*"
gitk --branches="feature/*"
Peringatan: Seperti yang ditunjukkan Slipp dalam komentar, garis miring dapat menyebabkan masalah. Karena cabang diimplementasikan sebagai jalur, Anda tidak dapat memiliki cabang bernama "foo" dan cabang lain bernama "foo / bar". Ini bisa membingungkan bagi pengguna baru.
Jangan gunakan angka telanjang
Jangan gunakan nomor bare (atau nomor hex) sebagai bagian dari skema penamaan cabang Anda. Di dalam tab-ekspansi nama referensi, git dapat memutuskan bahwa angka adalah bagian dari sha-1 dan bukan nama cabang. Misalnya, pelacak masalah saya menamai bug dengan angka desimal. Saya menamai cabang terkait saya CRnnnnn daripada hanya nnnnn untuk menghindari kebingungan.
$ git checkout CR15032<TAB>
Menu: fix/CR15032 test/CR15032
Jika saya mencoba mengembangkan hanya 15032, git tidak yakin apakah saya ingin mencari nama SHA-1 atau cabang, dan pilihan saya akan agak terbatas.
Hindari nama deskriptif yang panjang
Nama cabang yang panjang bisa sangat membantu ketika Anda melihat daftar cabang. Tapi itu bisa menghalangi ketika melihat log satu baris yang dihiasi karena nama-nama cabang dapat memakan sebagian besar baris tunggal dan menyingkat bagian yang terlihat dari log.
Di sisi lain, nama-nama cabang yang panjang dapat lebih membantu dalam "menggabungkan komit" jika Anda tidak terbiasa menulis ulang dengan tangan. Pesan komit gabungan default adalah Merge branch 'branch-name'
. Anda mungkin merasa lebih bermanfaat untuk menampilkan pesan gabungan sebagai Merge branch 'fix/CR15032/crash-when-unformatted-disk-inserted'
ganti hanya Merge branch 'fix/CR15032'
.