Trong cấu hình từ xa git mặc định, bạn phải đẩy các thẻ một cách rõ ràng (trong khi chúng được tìm nạp tự động cùng với các xác nhận mà chúng trỏ đến). Bạn cần sử dụng
$ git push <remote> tag <tagname>
để đẩy một thẻ, hoặc
$ git push <remote> --tags
để đẩy tất cả các thẻ (hoặc git push --tags
để đẩy đến điều khiển từ xa mặc định, thường origin
).
Đây là hành vi rất nhiều dự định, để làm cho các thẻ đẩy rõ ràng. Đẩy thẻ nên thường là sự lựa chọn có ý thức.
Tóm tắt những gì Junio C. Hamano đã viết (được liên kết trong các bình luận của @Andre Miras)
Khi tìm nạp, bạn đang tương tác với một kho lưu trữ từ xa mà ai đó đã xuất bản, có nghĩa là:
- bộ thẻ tồn tại có tất cả các nhà xuất bản muốn mọi người nhìn thấy, và
- không chỉ bạn mà những người khác cũng sẽ thấy các thẻ tương tự.
Nói cách khác, các thẻ trong kho lưu trữ mà bạn tìm nạp được thiết kế để công khai và chia sẻ. Nó sẽ tạo điều kiện giao tiếp giữa các nhà phát triển nếu mọi người dễ dàng tìm nạp các thẻ này.
Đó là lý do tại sao git fetch
tự động "theo dõi" các thẻ, tức là nó tải xuống các thẻ khi tải xuống các bản sửa đổi mà chúng trỏ đến - nói cách khác là tải xuống tất cả các thẻ được xuất bản có liên quan .
Khi đẩy, bạn đang đẩy từ kho lưu trữ làm việc của mình, phần lớn thời gian không công khai và các thẻ trong kho lưu trữ đó không được thiết kế để công khai. Bạn có thể sử dụng các thẻ cục bộ của riêng mình để đánh dấu tiến trình của mình, vì vậy sẽ không có ý nghĩa khi đẩy tất cả các thẻ trong kho lưu trữ của bạn vào kho lưu trữ mà bạn đang đẩy để xuất bản các thay đổi của mình, theo định nghĩa công khai.
Đó là lý do tại sao bạn cần đẩy thẻ rõ ràng, để đánh dấu thẻ là công khai.
Ngoài ra, bạn có thể định cấu hình điều khiển từ xa mà bạn đẩy để luôn đẩy tất cả các thẻ, ví dụ: đặt một cái gì đó giống như vậy vào .git/config
:
[từ xa "xuất bản"] # hoặc bất cứ thứ gì nó được đặt tên
url = ...
đẩy = + refs / Heads / *: refs / Heads / *
đẩy = + refs / tags / *: refs / tags / *
Điều này có nghĩa là lực đẩy tất cả các đầu (tất cả các nhánh) và tất cả các thẻ (nếu bạn không muốn đẩy đầu, hãy loại bỏ tiền tố '+' khỏi refspec).
git push --follow-tags
bây giờ có thể hữu ích, xem câu trả lời của tôi dưới đây