Saya telah menggunakan repositori git lokal yang berinteraksi dengan repositori CVS grup saya selama beberapa bulan, sekarang. Saya telah membuat sejumlah cabang yang hampir neurotik, yang sebagian besar untungnya bergabung kembali ke bagasi saya. Namun penamaan mulai menjadi masalah. Jika saya memiliki tugas yang mudah dinamai dengan label sederhana, tetapi saya menyelesaikannya dalam tiga tahap yang masing-masing menyertakan cabang mereka sendiri dan menggabungkan situasi, maka saya dapat mengulangi nama cabang setiap kali, tetapi itu membuat sejarah sedikit membingungkan. Jika saya mendapatkan lebih spesifik dalam nama-nama, dengan deskripsi terpisah untuk setiap tahap, maka nama-nama cabang mulai menjadi panjang dan sulit.
Saya memang belajar mencari melalui thread lama di sini bahwa saya bisa mulai menamai cabang dengan a / dalam nama, yaitu, topik / tugas, atau sesuatu seperti itu. Saya mungkin mulai melakukan itu dan melihat apakah itu membantu menjaga hal-hal lebih terorganisir.
Apa saja praktik terbaik untuk penamaan cabang git?
Sunting: Tidak ada yang benar-benar menyarankan konvensi penamaan. Saya menghapus cabang ketika saya selesai dengan mereka. Saya kebetulan memiliki beberapa di sekitar karena manajemen terus-menerus menyesuaikan prioritas saya. :) Sebagai contoh mengapa saya mungkin membutuhkan lebih dari satu cabang pada suatu tugas, misalkan saya perlu melakukan tonggak tersendiri yang terpisah dalam tugas ke repositori CVS grup. Pada saat itu, karena interaksi saya yang tidak sempurna dengan CVS, saya akan melakukan komit itu dan kemudian membunuh cabang itu. (Saya telah melihat terlalu banyak keanehan berinteraksi dengan CVS jika saya mencoba untuk terus menggunakan cabang yang sama pada saat itu.)
sumber
KEY-1234/allow-users-to-do-smart-stuff
Jawaban:
Berikut adalah beberapa konvensi penamaan cabang yang saya gunakan dan alasannya
Konvensi penamaan cabang
Token grup
Gunakan token "pengelompokan" di depan nama cabang Anda.
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:
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.
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.
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.
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.
(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:
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.
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 sebagaiMerge branch 'fix/CR15032/crash-when-unformatted-disk-inserted'
ganti hanyaMerge branch 'fix/CR15032'
.sumber
bug/20574/frabnotz-finder
danbug/20424
adalah bahwa begitu Anda mulai tanpa sub-token, Anda tidak bisa menambahkannya nanti dan sebaliknya. EG: Jika Anda membuatbug/20424
cabang, Anda tidak bisa membuatbug/20424/additional-fixing
cabang nanti (kecuali Anda menghapusbug/20424
cabang). Demikian juga, jikabug/20574/frabnotz-finder
sudah menjadi cabang, Anda tidak dapat membuatbug/20574
cabang. Saya cenderung menggunakan pembatas non-sub-token dalam kasus-kasus seperti ini (misalnyabug/20574_frabnotz-finder
), atau memilih nama default untuk sub-token (misalnyabug/20424/main
).feature
grup danbug
grup, yang dapat diperluas untuk menampilkanfoo
,bar
tag untuk yang pertama dan yang20574
,20592
grup20424
, dan ,21334
tag untuk yang terakhir.git branch -a
, dan mendapatkanremotes/origin/master
, dll. Ketika saya melihat git memberi tahu saya tentang cabang, saya tidak menggunakan garis miring ke depan dan ketika saya melihatnya, saya tahu itu adalah referensi "khusus".Model percabangan Git yang sukses oleh Vincent Driessen memiliki saran bagus. Gambar di bawah. Jika model percabangan ini menarik bagi Anda, pertimbangkan ekstensi aliran ke git . Yang lain berkomentar tentang aliran
Model Driessen termasuk
Cabang utama, hanya digunakan untuk rilis. Nama khas
master
.Cabang "berkembang" dari cabang itu. Itu yang digunakan untuk sebagian besar pekerjaan jalur utama. Biasa disebut
develop
.Beberapa cabang fitur dari cabang pengembangan. Nama berdasarkan nama fitur. Ini akan digabung kembali menjadi berkembang, bukan ke master atau melepaskan cabang.
Lepaskan cabang untuk menahan rilis kandidat, dengan hanya perbaikan bug dan tidak ada fitur baru. Nama khas
rc1.1
.Perbaikan terbaru adalah cabang yang berumur pendek untuk perubahan yang datang dari master dan akan menjadi master tanpa melibatkan cabang pengembangan.
sumber
Preferensi pribadi saya adalah menghapus nama cabang setelah saya selesai dengan cabang topik.
Alih-alih mencoba menggunakan nama cabang untuk menjelaskan arti cabang, saya memulai baris subjek dari komit di komit pertama di cabang itu dengan "Cabang:" dan memasukkan penjelasan lebih lanjut dalam tubuh pesan jika subjek tidak memberi saya ruang yang cukup.
Nama cabang yang saya gunakan adalah murni pegangan untuk merujuk ke cabang topik saat mengerjakannya. Setelah pekerjaan pada cabang topik selesai, saya menyingkirkan nama cabang, kadang-kadang menandai komit untuk referensi nanti.
Itu membuat output dari
git branch
lebih berguna juga: itu hanya mendaftar cabang-cabang berumur panjang dan cabang topik aktif, tidak semua cabang pernah.sumber
Saya telah mencampur dan mencocokkan dari skema berbeda yang pernah saya lihat dan berdasarkan pada tooling yang saya gunakan.
Jadi nama cabang saya yang lengkap adalah:
yang akan diterjemahkan menjadi:
Bagian-bagian dipisahkan oleh garis miring ke depan karena dapat ditafsirkan sebagai folder di SourceTree untuk pengaturan yang mudah. Kami menggunakan Jira untuk pelacakan masalah kami, jadi termasuk nomornya memudahkan untuk mencari di sistem. Termasuk nomor itu juga membuatnya dapat dicari ketika mencoba menemukan masalah itu di dalam Github ketika mencoba mengirimkan permintaan tarik.
sumber
name/feature/issue-tracker-number-short-description
Mengapa dibutuhkan tiga cabang / penggabungan untuk setiap tugas? Bisakah Anda menjelaskan lebih lanjut tentang itu?
Jika Anda menggunakan sistem pelacakan bug, Anda dapat menggunakan nomor bug sebagai bagian dari nama cabang. Ini akan membuat nama-nama cabang unik, dan Anda bisa mengawali mereka dengan satu atau dua kata pendek dan deskriptif agar tetap dapat dibaca oleh manusia
"ResizeWindow-43523"
. Ini juga membantu mempermudah Anda saat membersihkan cabang, karena Anda dapat mencari bug terkait. Beginilah biasanya saya memberi nama cabang saya.Karena cabang-cabang ini akhirnya digabungkan kembali menjadi master, Anda harus aman menghapusnya setelah Anda bergabung. Kecuali jika Anda bergabung
--squash
, seluruh sejarah cabang akan tetap ada seandainya Anda membutuhkannya.sumber
Catatan, seperti yang diilustrasikan dalam komit e703d7 atau commit b6c2a0d (Maret 2014), sekarang bagian dari Git 2.0, Anda akan menemukan konvensi penamaan lain (yang dapat Anda terapkan ke cabang).
Nama cabang tidak boleh memiliki ruang (lihat " Karakter mana yang ilegal dalam nama cabang? " Dan
git check-ref-format
halaman manual ).Jadi untuk setiap nama cabang yang akan diwakili oleh ekspresi multi-kata, menggunakan '
-
' (tanda hubung) sebagai pemisah adalah ide yang bagus.sumber
Menindaklanjuti saran farktronix, kami telah menggunakan nomor tiket Jira untuk hal yang serupa, dan saya berencana untuk terus menggunakannya untuk cabang git. Tapi saya pikir nomor tiketnya sendiri mungkin cukup unik. Meskipun mungkin bermanfaat untuk memiliki kata deskriptif dalam nama cabang seperti yang dicatat farktronix, jika Anda cukup sering berpindah antar cabang, Anda mungkin ingin sedikit mengetik. Kemudian jika Anda perlu tahu nama cabang, cari di Jira untuk kata kunci terkait di tiket jika Anda tidak mengetahuinya. Selain itu, Anda harus memasukkan nomor tiket di setiap komentar.
Jika cabang Anda mewakili versi, tampaknya konvensi umum adalah menggunakan format xxx (contoh: "1.0.0") untuk nama cabang dan vx.xx (contoh "v1.0.0") untuk nama tag (untuk menghindari konflik) . Lihat juga: is-there-an-an-standard-penamaan-konvensi-untuk-git-tag
sumber
v1.2.4
cabang pada akhirnya mengarah ke titik akhir dengan sebuahv1.2.4
tag (apakah saya benar dalam menganggap ini adalah situasi di mana Anda berdua menamai cabang dan tag setelah versi) , maka apakah itu penting? Tag masih bisa dihubungi direfs/tags/v1.2.4
dan cabang direfs/heads/v1.2.4
, dan tampaknya Git akan lebih suka nama tag ketika itu ambigu (dengan peringatan).