Saya ingin memaksakan push, misalnya, tag 1.0.0
saya ke master
cabang jarak jauh saya .
Saya sekarang melakukan hal berikut:
git push production +1.0.0:master
Saya ingin memaksakan dorongan , karena yang saya pedulikan adalah bahwa kode di dalam1.0.0
tag didorong kemaster
cabang pada repositori jarak jauh.
Apa yang saya lakukan salah?
Perbarui # 1
Ketika saya SSH ke server saya di mana repositori Git saya dan jalankan git branch -l
, saya tidak melihat master
cabang terdaftar.
Perbarui # 2
Setelah menjalankan git tag -l
dari dalam repositori Git jarak jauh, saya melihat yang master
terdaftar, artinya ketika saya menjalankan yang berikut:
git push production 1.0.0:master
Ini benar-benar mendorong tag dan membuat tag bernama master
daripada cabang baru .
Pada dasarnya saya ingin mendorong isi tag 1.0.0
ke master
cabang repositori Git jarak jauh.
Jawaban:
Mungkin gagal karena
1.0.0
merupakan tag beranotasi. Mungkin Anda melihat pesan kesalahan berikut:Tag beranotasi memiliki jenis objeknya sendiri yang berbeda yang menunjuk ke objek commit yang ditandai. Cabang tidak bisa dengan mudah menunjuk ke objek tag, hanya melakukan objek. Anda perlu "mengupas" tag beranotasi kembali untuk mengkomit objek dan mendorongnya.
Ada sintaks lain yang juga berfungsi dalam kasus ini, tetapi ini berarti sesuatu yang sedikit berbeda jika objek tag menunjuk ke sesuatu selain komit (atau objek tag yang menunjuk ke (objek tag yang menunjuk ke ...) komit) .
Sintaks mengupas tag ini dijelaskan dalam git-rev-parse (1) di bawah Menentukan Revisi .
sumber
git push rep +tag:master
akan membuat tag bernama master bukan cabang.git push rep +tag~0:master
(sekali lagi, ketika master tidak ada sebagai cabang atau tag) akan gagal dengan "kesalahan: tidak dapat mendorong ke tujuan yang tidak memenuhi syarat". Perintah yang akan melakukan apa yang Anda inginkan (sebelum ada cabang master / tag) adalahgit push rep +tag~0:refs/heads/master
(refs/heads/
adalah namespace tempat cabang disimpan).~{commit}
Sintaksnya literal (yaitu selalu sembilan karakter itu); katacommit
itu bukan pengganti di sini.sumber
git push production :1.0.0
.git push production :refs/tags/1.0.0
untuk menghapus tag sajaSaya membuat tag seperti ini dan kemudian mendorongnya ke GitHub:
sumber
Untuk mendorong satu tag:
git push <reponame> <tagname>
Misalnya
git push production 1.0.0
,. Tag tidak terikat pada cabang, mereka terikat pada komitmen.Saat Anda ingin memiliki konten tag di cabang master, lakukan itu secara lokal di mesin Anda. Saya akan berasumsi bahwa Anda terus berkembang di cabang master lokal Anda. Maka cukup saja
git push origin master
sudah cukup.sumber