Saya menyadari alasan bahwa git push --tags
ini adalah operasi yang terpisah dari yang lama git push
. Menekan tag harus menjadi pilihan sadar karena Anda tidak ingin mendorongnya secara tidak sengaja. Tidak apa-apa. Tetapi apakah ada cara untuk menyatukan keduanya? (Selain dari git push && git push --tags
.)
387
git push && git push --tags
?--follow-tags
opsi baru sejak git 1.8.3--tags
tidak membedakan antara sumberJawaban:
Perbarui Mei 2015
Pada git 2.4.1 , Anda bisa melakukannya
Sebagaimana dicatat dalam utas ini oleh Matt Rogers menjawab Wes Hurd :
--follow-tags
hanya mendorong tag beranotasi .Itu akan didorong (sebagai lawan dari
git tag <tagname>
, tag ringan, yang tidak akan didorong, seperti yang saya sebutkan di sini )Perbarui April 2013
Sejak git 1.8.3 (22 April, 2013) , Anda tidak lagi harus melakukan 2 perintah untuk mendorong cabang, dan kemudian untuk mendorong tag :
Anda sekarang dapat mencoba, ketika mendorong komit baru:
Namun itu tidak akan mendorong semua tag lokal, hanya yang direferensikan oleh komit yang didorong dengan
git push
.Git 2.4.1+ (Q2 2015) akan memperkenalkan opsi
push.followTags
: lihat " Cara membuat"git push
"sertakan tag dalam cabang? ".Jawaban asli, September 2010
Opsi nuklir akan menjadi
git push --mirror
, yang akan mendorong semua referensi di bawahrefs/
.Anda juga dapat menekan hanya satu tag dengan komit cabang Anda saat ini:
Anda dapat menggabungkan
--tags
opsi dengan refspec seperti:(Karena
--tags
berarti: Semua ref di bawahrefs/tags
didorong, selain refspec secara eksplisit terdaftar di baris perintah )Anda juga memiliki entri ini " Mendorong cabang dan tag dengan satu doa " git push "
Waspadalah , seperti dikomentari oleh Aseem Kishore
push = +refs/heads/*
akan memaksa-mendorong semua cabang Anda .René Scheibe menambahkan komentar menarik ini :
sumber
push = +refs/heads/*
garis memaksa -mencabut semua cabang Anda. Ini menggangguku sekarang, jadi FYI.--follow-tags
flag yang ditambahkan pada git 1.8.3, dapatkah saya mengkonfigurasi instalasi git saya untuk menjadikannya default?push.default
( git-scm.com/docs/git-config ) dapat menentukan tindakan default pada dorongan (nothing
,matching
,upstream
,simple
seperti di stackoverflow.com/a/10002469/6309 ). Anda perlu menambahkan--follow-tag
secara eksplisit.git push --follow-tags -f
tidak bekerja untuk saya.--follow-tags
parameter menyesatkan karena hanya tag di bawah.git/refs/tags
dianggap. Jikagit gc
dijalankan, tag dipindahkan dari.git/refs/tags
ke.git/packed-refs
. Setelahgit push --follow-tags ...
itu tidak berfungsi seperti yang diharapkan lagi.Mungkin ini membantu seseorang:
sumber
@ sejak Git 2.4
git push --atomic origin <branch name> <tag>
sumber
Git GUI memiliki tombol PUSH - maafkan plesetannya, dan kotak dialog yang terbuka memiliki kotak centang untuk tag.
Saya mendorong cabang dari baris perintah, tanpa tag, dan kemudian mencoba lagi mendorong cabang menggunakan
--follow-tags
opsi yang diuraikan di atas. Opsi ini dijelaskan sebagai tag beranotasi berikut. Tag saya adalah tag sederhana.Saya telah memperbaiki sesuatu, menandai komit dengan perbaikan di, (jadi kolega dapat memilih perbaikan,) kemudian mengubah nomor versi perangkat lunak dan menandai rilis yang saya buat (sehingga kolega dapat mengkloning rilis itu).
Git kembali dan mengatakan semuanya sudah terbaru. Itu tidak mengirim tag! Mungkin karena tag tidak beranotasi. Mungkin karena tidak ada yang baru di cabang.
Ketika saya melakukan dorongan serupa dengan Git GUI, tag dikirim.
Untuk saat ini, saya akan mendorong perubahan saya ke remote dengan Git GUI dan bukan dengan baris perintah dan
--follow-tags
.sumber