Saya telah menggunakan git selama sekitar satu tahun dan ingin menggunakan penandaan untuk, yah, memberi tag pada versi yang berbeda. Saya telah menemukan banyak info tentang perintah yang akan digunakan untuk bekerja dengan tag, tetapi yang ingin saya ketahui adalah mengapa menggunakan penandaan sama sekali jika saya bisa membuat cabang baru yang disebut 1.1.0
dan tidak harus mengaburkan pikiran saya secara keseluruhan kumpulan perintah git baru?
Harus ada banyak alasan bagus untuk memberi tag daripada bercabang, tetapi saya ingin tahu apa keuntungannya.
Tag tidak dapat diubah .
Sementara Anda dapat membuat cabang bernama "1.0.0" - Anda, atau siapa pun yang memiliki hak commit, juga dapat langsung mendorong ke cabang tersebut (sengaja atau tidak) dan mengubah arti 1.0.0.
Anda tidak dapat melakukannya dengan tag, setelah Anda membuat tag - hanya itu; Tag 1.0.0 artinya persis seperti itu dan tidak dapat diubah * .
Itulah perbedaan praktis utama antara tag dan cabang
* Anda dapat menghapus dan membuat ulang sebuah tag dengan demikian mengubah sebuah tag, tetapi tentunya tidak secara tidak sengaja.
sumber
Saya cenderung menggunakan alur kerja yang menggabungkan tag dan cabang. Tag bagus untuk menandai kode yang dirilis atau build pengembangan yang terkenal. Cabang bagus untuk melacak semua perubahan yang relevan dengan versi tertentu.
Berikut adalah artikel bagus tentang jenis alur kerja ini: http://nvie.com/posts/a-successful-git-branching-model/
sumber
Cabang dan tag adalah hal yang sama (penunjuk ke komit, alias. "Ref" ), kecuali cabang secara otomatis pindah ke komit berikutnya sementara tag tetap selamanya 1 pada komit yang sama.
Saat membuat rilis, Anda biasanya ingin menandai "snapshot" kode dari mana rilis itu dibuat, dan Anda ingin tetap ditandai seperti itu bahkan saat Anda terus mengembangkan kode, jadi Anda akan menggunakan tag.
Jika Anda mencoba menggunakan cabang untuk itu, itu bisa secara tidak sengaja pindah ke komit yang berbeda, dari mana rilis tidak dibuat.
1 Kecuali jika Anda menghapus tag tersebut, tentu saja.
CATATAN: Saya menyadari ini adalah pertanyaan lama, tetapi saya merasa bahwa kesamaan (dan satu perbedaan penting) antara cabang dan tanda belum disempurnakan dalam jawaban lain sejelas mungkin.
sumber
git commit
pembaruan kepala cabang yang diperiksa untuk mereferensikan komit baru, ya, tetapi tidak ada cabang lain yang “secara otomatis” pindah ke komit berikutnya. Anda harus menjelaskan paragraf pertama dari jawaban Anda..git\refs\heads
, berisi hash komit. Komit sendiri tidak "mengingat" cabang mana yang membuatnya. Ini berbeda dari Mercurial, misalnya, di mana info cabang dapat ditulis ke dalam metadata komit.Anda menggunakan tag untuk mencatat komitmen penting dalam sejarah. "Ini adalah commit tepat yang kami gunakan untuk versi ini pada hari hujan itu ketika server build rusak". Jika Anda menggunakan cabang dan bukan tag, Anda tidak akan pernah tahu komit persis apa yang Anda gunakan. Anda hanya tahu "Kami merilis versi 1.1.0 di suatu tempat di cabang ini", kecuali jika Anda secara manual menuliskan hash yang tepat untuk komit itu, itulah mengapa Anda menggunakan tag di tempat pertama :)
sumber
Selain jawaban lainnya, ini 2 sen saya.
Jawaban Singkat: Gunakan tag untuk versi rilis
Jawaban panjang: Saya percaya menggunakan tag untuk versi rilis secara khusus lebih baik daripada menggunakan cabang. Jika Anda perlu memperbarui relase, cukup buat cabang dari komit yang diberi tag dan setelah Anda selesai mengerjakan cabang itu (kemungkinan besar cabang perbaikan terbaru), buat tag baru di kepala cabang baru itu dengan versi baru. Kemudian, gabungkan cabang itu kembali menjadi master / develop karena Anda seharusnya tidak mengubah versi rilis kecuali itu adalah hotfix yang kemungkinan harus digabungkan kembali ke kode sumber Anda. Kemudian hapus cabang itu karena tidak lagi diperlukan. Jika Anda perlu menerapkan perbaikan terbaru lain ke versi baru tersebut, ulangi langkah yang sama.
Lihat bagian dari artikel berikut ini yang menunjukkan cara menggabungkan hotfix dengan alur kerja Git penulis - https://hackernoon.com/a-branching-and-releasing-strategy-that-fits-github-flow-be1b6c48eca2
sumber