Bagaimana cara mendaftar semua tag Git?

675

Dalam repositori saya, saya telah membuat tag menggunakan perintah berikut.

git tag v1.0.0 -m 'finally a stable release'
git tag v2.0.0 -m 'oops, there was still a major bug!'

Bagaimana Anda mendaftar semua tag di repositori?

Léo Léopold Hertz 준영
sumber

Jawaban:

955
git tag

Seharusnya cukup. Lihat git taghalaman manual


Anda juga memiliki:

git tag -l <pattern>

Daftar tag dengan nama yang cocok dengan pola yang diberikan (atau semua jika tidak ada pola yang diberikan).
Mengetik "git tag" tanpa argumen, juga mencantumkan semua tag.


Baru-baru ini (" Bagaimana cara mengurutkan git tag? ", Untuk Git 2.0+)

git tag --sort=<type>

Sortir dalam urutan tertentu.

Jenis yang didukung adalah:

  • " refname" (urutan leksikografis),
  • " version:refname" atau " v:refname" (nama tag diperlakukan sebagai versi).

Tambahkan "-" untuk membalik urutan.


Itu daftar keduanya:

  • tag beranotasi : objek penuh yang disimpan dalam database Git. Mereka checksummed; berisi nama penanda, email, dan tanggal; memiliki pesan pemberian tag; dan dapat ditandatangani dan diverifikasi dengan GNU Privacy Guard (GPG).
  • tag ringan : pointer sederhana ke komit yang ada

Catatan: artikel siap git tentang penandaan tidak menyetujui tag ringan.

Tanpa argumen, tag git menciptakan tag "ringan" yang pada dasarnya adalah cabang yang tidak pernah bergerak.
Tag ringan masih berguna, mungkin untuk menandai versi yang dikenal baik (atau buruk), atau banyak komitmen yang mungkin perlu Anda gunakan di masa depan.
Meskipun demikian, Anda mungkin tidak ingin mendorong tag semacam ini .

Biasanya, Anda ingin setidaknya memberikan opsi -a untuk membuat tag yang tidak ditandatangani, atau menandatangani tag dengan kunci GPG Anda melalui opsi -s atau -u.


Yang sedang berkata, Charles Bailey menunjukkan bahwa ' git tag -m "..."' sebenarnya menyiratkan tag (opsi -a) yang tepat (tanpa tanda tangan ), dan bukan yang ringan. Jadi Anda baik dengan perintah awal Anda.


Ini berbeda dari:

git show-ref --tags -d

Yang mencantumkan tag dengan komit mereka (lihat " Daftar Tag Git, tampilkan komit hash hash ").
Perhatikan -duntuk melakukan dereferensi objek tag beranotasi (yang memiliki komit SHA1 sendiri) dan menampilkan komit yang ditandai.

Demikian pula, git show --name-only <aTag>akan mencantumkan tag dan komit terkait.

VONC
sumber
6
Mungkin perlu menambahkan bahwa -m atau -F menyiratkan -a (jika bukan dari -a, -s atau -u disediakan secara eksplisit. Anda tidak dapat memiliki pesan tag tanpa membuat objek tag yang 'tepat'.
CB Bailey
1
Catatan untuk diri sendiri: dengan upvote ini, saya lulus 800000 (31 Agustus, 2018) di Stack Overflow, satu tahun dan satu bulan setelah mencapai 700000 (6 Agustus 2017) .
VonC
190

Untuk daftar tag saya lebih suka:

git tag -n

The -nbendera menampilkan baris pertama dari pesan penjelasan bersama dengan tag, atau yang pertama komit baris pesan jika tag tidak dijelaskan.

Anda juga dapat melakukan git tag -n5untuk menampilkan 5 baris pertama dari anotasi.

Finn
sumber
48

Juga git show-refagak berguna, sehingga Anda dapat langsung mengaitkan tag dengan komitmen koresponden :

$ git tag
osgeolive-6.5
v8.0
...

$ git show-ref --tags
e7e66977c1f34be5627a268adb4b9b3d59700e40 refs/tags/osgeolive-6.5
8f27e65bddd7d4b8515ce620fb485fdd78fcdf89 refs/tags/v8.0
...
Campa
sumber
1
Menjadi terbiasa dengan Mercurial, hg tagssaya suka itu git show-refmemberi saya tag DAN revisi.
Justin
34

Dan inilah cara Anda menemukan tag jarak jauh:

git ls-remote --tags origin

Dimitri Dewaele
sumber
15

Cobalah untuk membuat git tagharus cukup jika tidak mencoba untuk membuat git fetchkemudian git tag.

toto
sumber
4
Saya pikir maksudnya adalah ini: Menjalankan git tagperintah harus cukup jika Anda hanya ingin melihat daftar tag yang tersedia. Jika Anda tidak dapat melihat beberapa tag yang Anda yakini ada di remote, maka tag lokal Anda mungkin tidak sinkron dengan remote. Dalam hal ini, ambil referensi / kepala terbaru dari jarak jauh terlebih dahulu git fetch, diikuti oleh yang sebenarnya git tag. Saya biasanya menjalankan one-liner seperti ini: $ git fetch -p && git taghanya untuk memastikan saya melihat yang terbaru dan terhebat.
demisx
11

Mendaftar tag yang tersedia di Git sangat mudah. Cukup ketik git tag(dengan opsional -latau --list).

$ git tag
v5.5
v6.5

Anda juga dapat mencari tag yang cocok dengan pola tertentu.

$ git tag -l "v1.8.5*"
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2

Mendapatkan tag terbaru di repositori git

Perintah menemukan tag terbaru yang dapat dijangkau dari komit. Jika tag menunjuk ke komit, maka hanya tag yang ditampilkan. Jika tidak, suffix nama tag dengan jumlah komit tambahan di atas objek yang ditandai dan nama objek yang disingkat dari komit terbaru.

git describe

Dengan --abbrevset to 0, perintah dapat digunakan untuk menemukan yang terdekat tagnametanpa akhiran:

git describe --abbrev=0

Contoh lain:

git describe --abbrev=0 --tags # gets tag from current branch
git describe --tags `git rev-list --tags --max-count=1` // gets tags across all branches, not just the current branch

Cara memangkas tag git lokal yang tidak ada pada remote

Sederhananya, jika Anda mencoba melakukan sesuatu seperti git fetch -p -t, itu tidak akan bekerja dimulai dengan versi git 1.9.4.

Namun, ada solusi sederhana yang masih berfungsi di versi terbaru:

git tag -l | xargs git tag -d  // remove all local tags
git fetch -t                   // fetch remote tags
LYES - CHIOUKH
sumber
The rev-list perintah terkait memberi saya daftar, tapi berakhir kesalahan:v0.1.0-rc1 fatal: No tags can describe '5db7534...4a94'. Try --always, or create some tags.
not2qubit
10

Untuk melihat detail tentang tag terbaru yang tersedia, saya terkadang menggunakan:

git show `git describe` --pretty=fuller
Andrei Sura
sumber
6

Jika Anda ingin memeriksa nama tag Anda secara lokal, Anda harus pergi ke jalur tempat Anda membuat tag (jalur lokal). Berarti di mana Anda telah meletakkan benda Anda. Kemudian ketik perintah:

git show --name-only <tagname>

Ini akan menampilkan semua objek di bawah nama tag itu. Saya bekerja di Teradata dan objek berarti tampilan, tabel, dll

Tanaya
sumber
4

Anda dapat mencantumkan semua tag yang ada git tagatau Anda dapat memfilter daftar tersebut git tag -l 'v1.1.*', yang *berfungsi sebagai wildcard. Ini akan mengembalikan daftar tag yang ditandai v1.1.

Anda akan melihat bahwa ketika Anda menelepon git tagAnda tidak bisa melihat isi dari anotasi Anda. Untuk melihat mereka, Anda harus menambahkan -nperintah Anda: git tag -n2.

$ git tag -l -n2

v1.0 Versi rilis 1.0

v1.1 Versi rilis 1.1

Perintah ini mencantumkan semua tag yang ada dengan maksimum 3 baris pesan tag mereka. Secara default -nhanya menampilkan baris pertama. Untuk info lebih lanjut, pastikan untuk memeriksa artikel terkait tag ini juga.

Nesha Zoric
sumber
0

Untuk GUI untuk melakukan ini, saya baru saja menemukan bahwa 'gitk' mendukung tampilan bernama. Tampilan memiliki beberapa opsi untuk memilih komit. Salah satu yang praktis adalah kotak untuk memilih "Semua tag". Sepertinya itu berhasil bagi saya untuk melihat tag.

OBJ
sumber