Bagaimana cara melihat tag jarak jauh?

136

Di Atlassian SourceTree, bagaimana cara mengetahui tag mana yang hanya lokal dan yang juga di remote?

Saat membuat tag, Anda mendapatkan opsi "Tag push to: ...", tetapi bagaimana cara mengetahui apakah tag telah didorong atau belum setelah tag itu dibuat? Saya dapat melihat semua tag saya secara lokal, tetapi saya harus memastikan bahwa mereka ada di jarak jauh sehingga pengembang lain dapat menariknya.

cprcrack
sumber
Saya telah memperbarui jawaban saya di bawah untuk membahas Atlassian SourceTree secara khusus.
VonC

Jawaban:

121

Bahkan tanpa kloning atau pengambilan, Anda dapat memeriksa daftar tag pada repo hulu dengan git ls-remote:

git ls-remote --tags /url/to/upstream/repo

(seperti yang diilustrasikan dalam " Ketika mendaftar git-ls-remote mengapa ada" ^{}"setelah nama tag? ")

xbmono mengilustrasikan dalam komentar bahwa kutipan diperlukan:

git ls-remote --tags /some/url/to/repo "refs/tags/MyTag^{}"

Perhatikan bahwa Anda selalu dapat mendorong komit dan tag Anda dalam satu perintah dengan (git 1.8.3+, April 2013):

git push --follow-tags

Lihat Tag & komitmen push git secara bersamaan .


Mengenai Atlassian SourceTree secara khusus:

Perhatikan bahwa, dari utas ini , SourceTree ONLY menunjukkan tag lokal.

Ada RFE (Request for Enhancement) yang masuk SRCTREEWIN-4015sejak Desember 2015.

Solusi sederhana:

lihat daftar hanya tag yang tidak dicopot?

git push --tags

atau centang kotak " Push all tags" pada kotak dialog "Push", semua tag akan didorong ke remote Anda.

https://community.atlassian.com/tnckb94959/attachments/tnckb94959/sourcetree-questions/10923/1/Screen%20Shot%202015-12-15%20at%208.49.48%20AM.png

Dengan begitu, Anda akan "yakin bahwa mereka hadir di jarak jauh sehingga pengembang lain dapat menarik mereka".

VONC
sumber
3
Itu bagus tapi saya bertanya tentang bagaimana mengetahuinya dengan Atlassian SourceTree, bukan git command line.
cprcrack
Saya mencoba refs/tags/MyTag^{}mendapatkan komit id yang terhubung ke tag itu tetapi perintah git ls-remoteini tidak mengembalikan apa pun. Apakah ada cara untuk mendapatkan id komit dari tag dereferenced?
xbmono
@xbmono Ini harus menjadi stackoverflow.com/a/12939216/6309
VonC
1
@xbmono Tangkapan bagus! Saya telah memasukkan komentar Anda dalam jawaban untuk lebih banyak visibilitas.
VonC
145

Anda dapat mencantumkan tag pada repositori jarak jauh ls-remote, dan kemudian memeriksa apakah ada di sana. Misalkan nama referensi jarak jauh adalah originsebagai berikut.

git ls-remote --tags origin

Dan Anda dapat mendaftar tag lokal dengan tag.

git tag

Anda dapat membandingkan hasilnya secara manual atau dalam skrip.

Landys
sumber
1
@VonC Anda lebih cepat. :) Saya mencoba untuk menyelesaikan lebih banyak gitpertanyaan untuk membiasakan diri git. :)
Landys
Tidak masalah: begitulah cara saya belajar Git sejak akhir 2008.
VonC
1
Itu bagus tapi saya bertanya tentang bagaimana mengetahuinya dengan Atlassian SourceTree, bukan git command line.
cprcrack
2
@cprcrack Jadi Anda bertanya apakah Atlassian SourceTree menyediakan fitur untuk melihat tag jarak jauh di GUI, kan? Saya memiliki tampilan yang kasar, dan sepertinya tidak. Tapi mengapa tidak klik saja pada menu Actions -> Open in Terminal, lalu ketik git ls-remote --tags origindan jalankan?
Landys
2
@Landys Terima kasih, itu berguna. Saat mendaftarkan tag jarak jauh, saya melihat entri ganda. Mereka memiliki ID berbeda tetapi nama tag yang sama kecuali dengan postfix ^ {}. Contoh: release-v1.0, release-v1.0 ^ {}, release-v1.1, release-v1.1 ^ {}, dll. Apakah Anda tahu apa itu entri tambahan? Meskipun entri tambahan memiliki ID diff, git log <ID> memberikan output yang sama.
Shiouming