Geçerli taahhüdü etiketlemek istersem. Aşağıdaki komut satırlarının her ikisinin de çalıştığını biliyorum:
git tag <tagname>
ve
git tag -a <tagname> -m '<message>'
Bu komutlar arasındaki fark nedir?
Geçerli taahhüdü etiketlemek istersem. Aşağıdaki komut satırlarının her ikisinin de çalıştığını biliyorum:
git tag <tagname>
ve
git tag -a <tagname> -m '<message>'
Bu komutlar arasındaki fark nedir?
Yanıtlar:
Komutlar arasındaki fark, birinin size bir etiket mesajı sunması, diğerinin olmamasıdır. Açıklamalı bir etiket, git-show (1) ile görüntülenebilen bir iletiye sahipken, ek açıklama içermeyen bir etiket yalnızca taahhüt için adlandırılmış bir işaretçidir.
Belgelere göre : "Hafif bir etiket oluşturmak için -a, -s veya -m seçeneklerinden hiçbirini belirtmeyin, yalnızca bir etiket adı belirtin". Ek açıklamalı etiketlere mesaj yazmak için bazı farklı seçenekler de vardır:
git tag <tagname>
Git, geçerli revizyonda bir etiket oluşturur, ancak sizden ek açıklama istemez. Mesajsız olarak etiketlenir (bu hafif bir etikettir).git tag -a <tagname>
Git, ileti sağlamak için -m bayrağını kullanmadığınız sürece sizden ek açıklama ister.git tag -a -m <msg> <tagname>
Git, kesinliği etiketleyecek ve sağlanan iletiyle açıklama ekleyecektir.git tag -m <msg> <tagname>
Git, ek açıklama için -a bayrağını geçmiş gibi davranır ve sağlanan iletiyi kullanır.Temel olarak, yalnızca etiketin bir ek açıklamaya ve onunla ilişkili diğer bazı bilgilere sahip olup olmayacağınız anlamına gelir.
git tag -a <tag> -m ''
) olabilir, ancak ek açıklamalı etiket her zaman etiketleyici (yazar) ve tarih içerir .
git push --follow-tags
, yalnızca açıklamalı etiketlerin aktarılacağıdır.
Açıklamalı etiketleri itin, hafifliği yerel tutun
man git-tag
diyor:
Açıklamalı etiketler serbest bırakılırken, hafif etiketler özel veya geçici nesne etiketleri içindir.
Ve bazı davranışlar, bu tavsiyenin yararlı olacağı şekilde aralarında ayrım yapar:
ek açıklamalı etiketler işaret ettikleri taahhütten farklı bir mesaj, içerik oluşturucu ve tarih içerebilir. Böylece bunları, bir yayın taahhüdü vermeden bir yayın tanımlamak için kullanabilirsiniz.
Hafif etiketlerde fazladan bilgi yoktur ve buna gerek yoktur, çünkü yalnızca geliştirmek için kendiniz kullanacaksınız.
git describe
komut satırı seçenekleri olmadan yalnızca ek açıklama eklenmiş etiketleri görürİç farklar
hem hafif hem de açıklamalı etiketler, .git/refs/tags
SHA-1 içeren bir dosyadır
hafif etiketler için SHA-1 doğrudan bir taahhüde işaret eder:
git tag light
cat .git/refs/tags/light
KAFA SHA-1 ile aynı yazdırır.
Başka meta veri içeremediklerine şaşmamalı.
açıklamalı etiketler nesne veritabanındaki bir etiket nesnesini gösterir.
git tag -as -m msg annot
cat .git/refs/tags/annot
açıklamalı etiket nesnesinin SHA'sını içerir:
c1d7720e99f9dd1d1c8aee625fd6ce09b3a81fef
ve sonra içeriğini şu şekilde alabiliriz:
git cat-file -p c1d7720e99f9dd1d1c8aee625fd6ce09b3a81fef
örnek çıktı:
object 4284c41353e51a07e4ed4192ad2e9eaada9c059f
type commit
tag annot
tagger Ciro Santilli <your@mail.com> 1411478848 +0200
msg
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
<YOUR PGP SIGNATURE>
-----END PGP SIGNAT
Ek meta verileri bu şekilde içerir. Çıktıdan görebildiğimiz gibi, meta veri alanları:
Biçimin daha ayrıntılı bir analizi şu adreste bulunur: Git etiketi nesnesinin biçimi nedir ve SHA'sı nasıl hesaplanır?
Bonuslar
Bir etiketin açıklanıp açıklanmadığını belirleyin:
git cat-file -t tag
çıktılar
commit
hafiflik için, etiket nesnesi olmadığından, doğrudantag
ek açıklama için, bu durumda bir etiket nesnesi olduğundanYalnızca hafif etiketleri listele: Tüm hafif etiketleri nasıl listeleyebilirim?
Büyük fark mükemmel açıklanır burada .
Temel olarak, hafif etiketler sadece belirli taahhütlere işaret eder. Daha fazla bilgi kaydedilmez ; Öte yandan, açıklamalı etiketler , yazarları ve tarihleri olan ve kendi SHA anahtarlarına sahip oldukları için referans verilebilen normal nesnelerdir .
Bilerek Eğer kim etiketli neyi ve ne zaman sizi ilgilendirmektedir, ardından etiketleri açıklamalı kullanın. Eğer varsa sadece gelişiminde belirli bir noktayı etiketlemek istediğiniz herhangi kim olduğu önemli ve bunu yaptıklarında, daha sonra hafif etiketleri iyi yeterlidir.
Normalde ek açıklamalı etiketler tercih edersiniz, ancak bu gerçekten projenin Git master'ına bağlıdır.