Saat ini saya memiliki pengaturan git remote seperti berikut:
[remote "upstream"]
url = <redacted>
fetch = +refs/heads/*:refs/remotes/upstream/*
Ketika saya menerbitkan git pull
master cabang, semua kepala jarak jauh diambil menjadi remote / upstream, kemudian remote / upstream / master digabung menjadi master. Tag apa pun yang dapat dihubungi juga diambil pada saat yang sama, yang sangat nyaman.
Saya juga ingin git pull
mengambil semua tag dari jarak jauh, bukan hanya tag yang dapat dijangkau langsung dari kepala. Saya awalnya mencoba mengatur tagopt == --tags
, tetapi menemukan ini hanya menyebabkan tag untuk mengambil dan dengan demikian merusak semuanya. (Junio bahkan mengatakan itu adalah kesalahan konfigurasi yang mengerikan ).
Apakah ada cara untuk git pull
mengambil semua tag jarak jauh secara default, selain dari kepala jarak jauh?
git push origin <tag_name>
tagopt
solusi tidak lagi salah konfigurasi; pada 1.9 / 2.0 (Q1 2014) ini akan mengambil semua tag selain apa pun yang biasanya diambil.Jawaban:
Anda harus dapat melakukannya dengan menambahkan refspec untuk tag ke konfigurasi lokal Anda. Secara konkret:
sumber
Sederhana
git fetch --tags
bekerja untuk saya.sumber
git ls-remote
.The
--force
pilihan berguna untuk menyegarkan tag lokal. Terutama jika Anda memiliki tag mengambang:Opsi tarik git juga memiliki
--force
opsi, dan deskripsinya sama:tetapi, menurut dokumen dari
--no-tags
:Jika pernyataan default itu bukan batasan, maka Anda juga bisa mencoba
sumber
git pull --force
tidak termasukgit fetch --tags --force
Bagi saya yang berikut ini sepertinya berhasil.
sumber
git fetch --tags
. Saya ingin memberikan jawaban alternatif. pull = fetch + merge. Jadi fetch juga terjadi.Itu mudah. Lakukan a
sumber
Saya menggunakan ini dengan magit di kernel.org
sumber