Masalah ini menunjukkan bahwa:
Dari pemahaman saya menempatkan tag pada cabang rilis sebelum penggabungan (dan bukan pada cabang master) sebenarnya adalah hal yang benar untuk dilakukan sehingga dapat ditemukan oleh git menggambarkan - tag dari cabang pengembangan, juga. Lihat # 374
sementara posting lain :
Saya tidak sengaja menginstal versi 0.4.2-pre via homebrew hari ini dan bingung dengan cara penandaan bekerja di versi itu. Sebelumnya (versi 0.4.1) tag dibuat di cabang master, setelah cabang rilis digabungkan ke dalamnya. Sekarang tampaknya tag dibuat pada komit terakhir dari cabang rilis, yang sepertinya bukan ide yang baik untuk saya. Terutama jika Anda memiliki sistem build yang bergantung pada git tag dan membuat versi rilis jika HEAD adalah komit yang ditandai dan versi pengembangan jika salah satu dari komitmen berikut ini berkomitmen. Bisakah seseorang menjelaskan logika di balik perubahan ini kepada saya? Dan sehubungan dengan versi semantik, saya tidak akan menganggap ini sebagai versi singkat di tingkat patch!
Di tim kami, kami memiliki dan melakukan beberapa diskusi tentang ini. Beberapa menunjukkan bahwa tag perlu dibuat dari cabang master sementara yang lain lebih suka cabang rilis. Menurut gambar gitflow:
sepertinya tag ditempatkan pada master.
Jawaban:
Pertama, Anda tidak dapat menandai cabang, Anda hanya dapat menandai komitmen.
Anda harus menandai komit yang benar-benar Anda lepaskan. Itulah gunanya melakukan penandaan versi. Jika Anda memiliki masalah dengan perangkat lunak di beberapa lingkungan (produksi atau lainnya), Anda dapat mengatakan dengan yakin bahwa masalah tersebut diperkenalkan oleh komit yang berasal dari rilis tersebut.
(Inilah sebabnya mengapa orang berbicara tentang 'bangunan yang dapat direproduksi': sehingga mereka dapat yakin bahwa proses rilis mereka tidak memperkenalkan bug baru yang tidak ada di lingkungan pratinjau / pementasan mereka, dan bahwa jika mereka memiliki bug dalam produksi sama biner berjalan di mesin mereka ketika mereka pergi untuk debug itu.)
Tidak ada gunanya menandai komit hijau kedua dari bawah (anak hijau komit ditandai 'Hanya perbaikan bug!') Sebagai 'v1.0' karena Anda tidak melepaskan komit itu untuk produksi. Anda merilis komit pada master. Anda bahkan dapat melihat bahwa aliran git telah menandainya sebagai 'Tag 1.0'.
Ingat, tag memiliki tujuan: untuk dengan mudah menemukan komitmen. Anda menandai komit sebagai 'v1.0' sehingga Anda dapat dengan mudah menemukan hal yang Anda lepaskan sebagai versi 1.0. Anda tidak memberi tag demi memiliki tag 'v1.0' di suatu tempat di pohon komit Anda secara samar-samar di dekat komit yang sebenarnya Anda lepaskan.
Jika Anda memiliki masalah menemukan tag dari cabang pengembangan Anda itu masalah yang sama sekali terpisah. Perbaiki alat yang Anda gunakan untuk menemukan tag. Atau lebih baik lagi: jangan gunakan git-flow. Kelihatannya bagus dalam diagram itu karena titik-titik berwarna yang indah dan garis-garis yang ditata dengan baik, tetapi dalam kenyataannya itu tampak seperti jaring berantakan garis-garis dan titik-titik berwarna.
sumber
You should tag the commit you actually release
. Jadi jika misalnya 20 komit yang perlu dirilis berada di cabang rilis dan cabang ini digabung menjadi master, komit gabungan yang telah dibuat harus ditandai untuk mengetahui apa yang telah dirilis?branch:master