W domyślnej konfiguracji zdalnej git musisz jawnie wypychać tagi (gdy są one pobierane automatycznie wraz z zatwierdzeniami, które wskazują). Musisz użyć
$ git push <remote> tag <tagname>
wcisnąć pojedynczy tag lub
$ git push <remote> --tags
wcisnąć wszystkie tagi (lub git push --tags
wcisnąć domyślnie pilota origin
).
Jest to bardzo zamierzone zachowanie, aby jawnie przesuwać tagi. Naciskanie tagów powinno być zwykle świadomym wyborem.
Podsumowanie tego, co napisał Junio C. Hamano (link w komentarzach @Andre Miras)
Podczas pobierania masz do czynienia ze zdalnym repozytorium, które ktoś opublikował, co oznacza:
- zestaw tagów, które istnieją, to wszystko, co wydawca chciał, aby ludzie widzieli, i
- nie tylko ty, ale i inni ludzie zobaczą te same tagi.
Innymi słowy, tagi w repozytoriach, które pobierasz, są zaprojektowane jako publiczne i udostępnione. Ułatwi komunikację między programistami, jeśli wszyscy będą mogli pobrać te same tagi.
Dlatego git fetch
automatycznie „podąża” za tagami, tzn. Pobiera tagi podczas pobierania wersji, na które wskazują - innymi słowy, pobiera wszystkie odpowiednie opublikowane tagi.
Podczas wypychania wypychasz ze swojego działającego repozytorium, które przez większość czasu nie jest publiczne, a tagi w tym repozytorium nie są zaprojektowane jako publiczne. Możesz użyć własnych tagów lokalnych, aby zaznaczyć swoje postępy, więc nie ma sensu ślepo przesuwać wszystkich tagów w repozytorium do repozytorium, które wypychasz, aby opublikować zmiany, których tagi są z definicji publiczne.
Dlatego musisz wyraźnie nacisnąć tag, aby oznaczyć tag jako publiczny.
Alternatywnie możesz skonfigurować pilota, do którego naciskasz, aby zawsze wypychał wszystkie tagi, np. Wstawiał coś takiego .git/config
:
[zdalne „publikowanie”] # lub jakkolwiek to się nazywa
url = ...
push = + refs / heads / *: refs / heads / *
push = + refs / tags / *: refs / tags / *
Oznacza to wymuszone pchanie wszystkich głów (wszystkie gałęzie) i wszystkie tagi (jeśli nie chcesz wymuszonego pchania głów, usuń prefiks „+” z refspec).
git push --follow-tags
może być teraz użyteczne, patrz moja odpowiedź poniżej