Câu hỏi Làm cách nào để đẩy thẻ vào kho lưu trữ từ xa bằng Git?


Tôi đã nhân bản một kho lưu trữ Git từ xa vào máy tính xách tay của mình, sau đó tôi muốn thêm một thẻ để tôi chạy

git tag mytag master

Khi tôi chạy git tag trên máy tính xách tay của tôi thẻ mytag được hiển thị. Sau đó tôi muốn đẩy điều này vào kho lưu trữ từ xa để tôi có thẻ này trên tất cả các khách hàng của mình, vì vậy tôi chạy git push nhưng tôi nhận được tin nhắn:

Mọi thứ đều được cập nhật

Và nếu tôi vào máy tính để bàn và chạy git pull và sau đó git tag không có thẻ nào được hiển thị.

Tôi cũng đã cố gắng thực hiện một thay đổi nhỏ trên một tệp trong dự án, sau đó đẩy nó vào máy chủ. Sau đó tôi có thể kéo thay đổi từ máy chủ sang máy tính để bàn của tôi, nhưng vẫn không có thẻ khi chạy git tag trên máy tính để bàn của tôi.

Làm thế nào tôi có thể đẩy thẻ của tôi vào kho lưu trữ từ xa để tất cả các máy khách có thể nhìn thấy nó?


1548
2018-03-04 15:37


gốc




Các câu trả lời:


Để đẩy một Độc thân nhãn:

git push origin <tag_name>

Và lệnh sau sẽ đẩy tất cả các thẻ (không được khuyến nghị):

git push --tags

2470
2018-03-04 15:40



Tôi khuyên bạn không nên sử dụng hoặc đào tạo những người khác để sử dụng git push --tags vì nó có thể rất khó khăn để loại bỏ các thẻ xấu khi đồng nghiệp của bạn được đào tạo để đẩy tất cả các thẻ, vì mọi người tiếp tục đẩy các thẻ cũ mà họ có cục bộ mỗi lần họ muốn đẩy thẻ mới. Bởi vì điều này, tôi sẽ chỉ khuyên mọi người sử dụng git push origin <tag_name> hiện nay. - Scott Jungwirth
Để đẩy một đã di chuyển nhãn: git push origin <tag_name> --force - Bob Stein
Vâng @ScottJungwirth Tôi nghĩ là một nhà phát triển nên cẩn thận. Nếu không, bạn cũng có thể khuyên không nên dạy các lệnh sẵn có. - Willa
Nếu thẻ của bạn giống với chi nhánh từ xa và git push thất bại với error: src refspec <tag_name> matches more than one., bạn có thể đẩy nó như git push origin tag <tag_name> - Volodymyr Sapsai
Vâng @Willa câu hỏi là "đẩy một cho một repo từ xa. " git push origin <tag_name> là một câu trả lời tốt hơn cho câu hỏi đó. ;) - Wildcard


git push --follow-tags

Đây là một tùy chọn lành mạnh được giới thiệu trong Git 1.8.3:

git push --follow-tags

Nó đẩy cả hai cam kết và chỉ các thẻ có cả hai:

  • được chú thích
  • có thể truy cập (tổ tiên) từ các cam kết đã được đẩy

Điều này là lành mạnh bởi vì:

Đó là vì những lý do đó --tags nên tránh.

Git 2.4 đã thêm các push.followTags tùy chọn để bật cờ đó theo mặc định mà bạn có thể đặt với:

git config --global push.followTags true

700
2017-10-18 09:12



Cảm ơn vì điều này, nó có ý nghĩa để đẩy tất cả mọi thứ trong một đi, so với việc phải đẩy nội dung sau đó đẩy thẻ một cách riêng biệt. - Shane
Nó không phải là rõ ràng cùng một lúc đối với tôi rằng nó là một và mối quan hệ giữa "chú thích" và "có thể truy cập từ các cam kết đẩy". Tôi hy vọng nó sẽ đẩy tất cả các thẻ có thể truy cập, bất cứ điều gì nếu có chú thích hay không. Có thể chỉnh sửa để đảm bảo đó không phải là OR? - Gauthier
@Gauthier cảm ơn, đã thêm cả hai để phân biệt - Ciro Santilli 新疆改造中心 六四事件 法轮功
soo, như tôi đã làm điều này, tôi quay trở lại bitbucket, tôi có nên xem danh sách thẻ ở đâu đó ngoài việc có thể nhìn thấy nó từ dòng lệnh không? - PositiveGuy
Cảm ơn bạn đã gửi mẹo push.followTags. Tôi không thể tin rằng đây không phải là mặc định out-of-the-box. Nếu không có nó, thậm chí không bận tâm để gắn thẻ, bạn sẽ quên và nhận được ra khỏi thẻ đồng bộ. - moodboom


Để đẩy cụ thể, một thẻ làm theo git push origin tag_name


228
2017-10-24 14:43





Mở rộng trên Câu trả lời của Trevor, bạn có thể đẩy một thẻ hoặc tất cả thẻ cùng một lúc.

Đẩy một thẻ duy nhất

git push <remote> <tag>

Đây là một bản tóm tắt của tài liệu liên quan giải thích điều này (một số tùy chọn lệnh bị bỏ qua cho ngắn gọn):

git push [[<repository> [<refspec>…]]

<refspec>...

Định dạng của một <refspec> tham số là… nguồn ref <src>,   theo sau là dấu hai chấm :, tiếp theo là ref đích <dst>

Các <dst> cho biết ref nào ở phía xa được cập nhật với điều này   đẩy… Nếu :<dst> được bỏ qua, cùng ref <src> sẽ là   đã cập nhật…

nhãn <tag> có nghĩa là giống như refs/tags/<tag>:refs/tags/<tag>.

Đẩy tất cả các thẻ của bạn cùng một lúc

git push --tags <remote>
# Or
git push <remote> --tags

Dưới đây là tóm tắt về tài liệu liên quan (một số tùy chọn lệnh bỏ qua cho ngắn gọn):

git push [--all | --mirror | --tags] [<repository> [<refspec>…]]

--tags

Tất cả refs under refs/tags được đẩy, ngoài việc refspecs một cách rõ ràng   được liệt kê trên dòng lệnh.


74
2018-04-22 10:52



Ví dụ là loại bỏ từ khóa tag. ví dụ. git push origin tag funny-tag-1. - JamesThomasMoon1979
@ JamesThomasMoon1979 Bạn không cần nó. Bạn đẩy một thẻ duy nhất để có nguồn gốc như thế này: git push origin my-tag (Tôi vừa thử nó!) - Andres F.
Tôi đang sử dụng phiên bản 1.9.1, còn bạn thì sao @AndresF. ? - JamesThomasMoon1979
@ JamesThomasMoon1979 Phiên bản 2.10.2. Có lẽ đó là nó? - Andres F.


Bạn có thể đẩy các thẻ như thế này git push --tags


41
2018-03-04 15:40





Thẻ không được gửi đến kho lưu trữ từ xa bằng lệnh git push. Chúng tôi cần gửi một cách rõ ràng các thẻ này đến máy chủ từ xa bằng cách sử dụng lệnh sau:

git push origin <tagname>

Chúng tôi có thể đẩy tất cả các thẻ cùng một lúc bằng cách sử dụng lệnh dưới đây:

git push origin --tags

Dưới đây là một số tài nguyên để biết chi tiết đầy đủ về gắn thẻ git:

http://www.cubearticle.com/articles/more/git/git-tag

http://wptheming.com/2011/04/add-remove-github-tags


39
2018-01-10 05:57





Bạn có thể đẩy các thẻ địa phương của bạn bằng cách đơn giản git push --tags chỉ huy.

$ git tag                            # see tag lists
$ git push origin <tag-name>         # push a single tag
$ git push --tags                    # push all local tags 

13
2017-11-25 08:15





tôi đang dùng git push <remote-name> tag <tag-name> để đảm bảo rằng tôi đang đẩy thẻ. Tôi sử dụng nó như: git push origin tag v1.0.1. Mẫu này dựa trên tài liệu (man git-push):

OPTIONS
   ...
   <refspec>...
       ...
       tag <tag> means the same as refs/tags/<tag>:refs/tags/<tag>.

2
2018-04-18 18:24





Xin vui lòng không sử dụng nó, nếu bạn chỉ tìm kiếm một lệnh vì ý định chính của giải pháp này là giới thiệu cho bạn một cách giải pháp!

Để làm cho cuộc sống dễ dàng hơn - tôi đã viết một kịch bản git-cheat-sheet , có chứa một số lệnh hữu ích, bao gồm các lệnh sau:

./git_commands.sh -push_tag TAG_NAME


0
2018-06-19 16:07





Nếu bạn đang làm việc trong một chi nhánh:

git push --tags origin branch_name

-7
2018-04-26 15:39



Điều này cũng đẩy chi nhánh, câu hỏi ban đầu chỉ dành cho thẻ. - CharlesB