Làm thế nào để liệt kê tất cả các thẻ Git?


675

Trong kho lưu trữ của tôi, tôi đã tạo các thẻ bằng các lệnh sau.

git tag v1.0.0 -m 'finally a stable release'
git tag v2.0.0 -m 'oops, there was still a major bug!'

Làm thế nào để bạn liệt kê tất cả các thẻ trong kho lưu trữ?

Câu trả lời:


953
git tag

nên là đủ. Xem git tagtrang người đàn ông


Bạn cũng có:

git tag -l <pattern>

Liệt kê các thẻ có tên khớp với mẫu đã cho (hoặc tất cả nếu không có mẫu nào được cung cấp).
Nhập "thẻ git" không có đối số, cũng liệt kê tất cả các thẻ.


Gần đây hơn (" Cách sắp xếp thẻ git? ", Cho Git 2.0+)

git tag --sort=<type>

Sắp xếp theo thứ tự cụ thể.

Loại được hỗ trợ là:

  • " refname" (thứ tự từ điển),
  • " version:refname" Hoặc " v:refname" (tên thẻ được coi là phiên bản).

Chuẩn bị "-" để đảo ngược thứ tự sắp xếp.


Điều đó liệt kê cả hai:

  • thẻ chú thích : các đối tượng đầy đủ được lưu trữ trong cơ sở dữ liệu Git. Họ đang kiểm tra; chứa tên tagger, e-mail và ngày; có một thông điệp gắn thẻ; và có thể được ký và xác minh với GNU Privacy Guard (GPG).
  • thẻ nhẹ : con trỏ đơn giản đến một cam kết hiện có

Lưu ý: bài viết sẵn sàng git về việc gắn thẻ không chấp nhận thẻ nhẹ.

Nếu không có đối số, thẻ git sẽ tạo ra một thẻ hạng nhẹ của Wikipedia về cơ bản là một nhánh không bao giờ di chuyển.
Các thẻ nhẹ vẫn hữu ích, có lẽ để đánh dấu một phiên bản tốt (hoặc xấu) đã biết hoặc một loạt các cam kết bạn có thể cần sử dụng trong tương lai.
Tuy nhiên, có lẽ bạn không muốn đẩy các loại thẻ này .

Thông thường, bạn muốn ít nhất vượt qua tùy chọn -a để tạo thẻ không dấu hoặc ký tên bằng khóa GPG thông qua các tùy chọn -s hoặc -u.


Điều đó đang được nói, Charles Bailey chỉ ra rằng một ' git tag -m "..."' thực sự ngụ ý một thẻ (chú thích không dấu) thích hợp (tùy chọn -a'), và không phải là một thẻ nhẹ. Vì vậy, bạn là tốt với lệnh ban đầu của bạn.


Điều này khác với:

git show-ref --tags -d

Danh sách các thẻ có cam kết của chúng (xem " Danh sách thẻ Git, hiển thị băm sha1 ").
Lưu ý -dđể hủy đăng ký đối tượng thẻ chú thích (có cam kết riêng SHA1) và hiển thị cam kết được gắn thẻ thực tế.

Tương tự, git show --name-only <aTag>sẽ liệt kê các thẻ và cam kết liên quan.


6
Có lẽ đáng để thêm rằng -m hoặc -F ngụ ý -a (nếu không phải là -a, -s hoặc -u được cung cấp rõ ràng. Bạn không thể có thông báo thẻ mà không tạo đối tượng thẻ 'phù hợp'.
CB Bailey

1
Lưu ý đến bản thân: với upvote này, tôi vượt qua 800000 (ngày 31 tháng 8 năm 2018) trên Stack Overflow, một năm và một tháng sau khi đạt 700000 (ngày 6 tháng 8 năm 2017) .
VonC

190

Để liệt kê các thẻ tôi thích:

git tag -n

Các -nlá cờ sẽ hiển thị dòng đầu tiên của thông điệp chú thích cùng với thẻ, hoặc cam kết đầu tiên dòng thông báo nếu thẻ không được chú thích.

Bạn cũng có thể làm git tag -n5để hiển thị 5 dòng đầu tiên của chú thích.


48

Cũng git show-refkhá hữu ích, do đó bạn có thể liên kết trực tiếp các thẻ với các cam kết tương ứng :

$ git tag
osgeolive-6.5
v8.0
...

$ git show-ref --tags
e7e66977c1f34be5627a268adb4b9b3d59700e40 refs/tags/osgeolive-6.5
8f27e65bddd7d4b8515ce620fb485fdd78fcdf89 refs/tags/v8.0
...

1
Được sử dụng cho Mercurial, hg tagstôi thích điều đó git show-refmang lại cho tôi thẻ VÀ bản sửa đổi.
Justin


15

Cố gắng làm cho git tagnó là đủ nếu không cố gắng để làm git fetchsau đó git tag.


4
Tôi nghĩ ý của anh ấy là thế này: Chạy git taglệnh là đủ nếu bạn chỉ muốn xem danh sách các thẻ có sẵn. Nếu bạn không thể thấy một số thẻ mà bạn tin rằng có thể tồn tại trên điều khiển từ xa, thì các thẻ cục bộ của bạn có thể không đồng bộ với điều khiển từ xa. Trong trường hợp này, hãy tìm nạp các ref / head mới nhất từ ​​xa trước git fetch, sau đó là thực tế git tag. Tôi thường chạy một lớp lót như thế này: $ git fetch -p && git tagchỉ để chắc chắn rằng tôi đang xem xét mới nhất và tốt nhất.
demisx

11

Liệt kê các thẻ có sẵn trong Git rất đơn giản. Chỉ cần gõ git tag(với tùy chọn -lhoặc --list).

$ git tag
v5.5
v6.5

Bạn cũng có thể tìm kiếm các thẻ phù hợp với một mẫu cụ thể.

$ git tag -l "v1.8.5*"
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2

Lấy thẻ mới nhất trên kho git

Lệnh tìm thẻ gần đây nhất có thể truy cập từ một cam kết. Nếu thẻ trỏ đến cam kết, thì chỉ thẻ được hiển thị. Mặt khác, nó có hậu tố tên thẻ với số lần xác nhận bổ sung ở trên cùng của đối tượng được gắn thẻ và tên đối tượng viết tắt của lần xác nhận gần đây nhất.

git describe

Với --abbrevthiết lập 0, lệnh có thể được sử dụng để tìm gần nhất tagnamemà không có hậu tố:

git describe --abbrev=0

Những ví dụ khác:

git describe --abbrev=0 --tags # gets tag from current branch
git describe --tags `git rev-list --tags --max-count=1` // gets tags across all branches, not just the current branch

Cách tỉa thẻ git cục bộ không tồn tại trên remote

Nói một cách đơn giản, nếu bạn đang cố gắng làm một cái gì đó như thế git fetch -p -t, nó sẽ không hoạt động bắt đầu với phiên bản git 1.9.4.

Tuy nhiên, có một cách giải quyết đơn giản vẫn hoạt động trong các phiên bản mới nhất:

git tag -l | xargs git tag -d  // remove all local tags
git fetch -t                   // fetch remote tags

Các rev-list lệnh có liên quan đã cho tôi một danh sách, nhưng kết thúc trong một lỗi:v0.1.0-rc1 fatal: No tags can describe '5db7534...4a94'. Try --always, or create some tags.
not2qubit

10

Để xem chi tiết về thẻ có sẵn mới nhất, đôi khi tôi sử dụng:

git show `git describe` --pretty=fuller

6

Nếu bạn muốn kiểm tra tên thẻ của mình cục bộ, bạn phải đi đến đường dẫn mà bạn đã tạo thẻ (đường dẫn cục bộ). Có nghĩa là nơi bạn đã đặt các đối tượng của bạn. Sau đó gõ lệnh:

git show --name-only <tagname>

Nó sẽ hiển thị tất cả các đối tượng dưới tên thẻ đó. Tôi đang làm việc trong Teradata và đối tượng có nghĩa là xem, bảng vv


4

Bạn có thể liệt kê tất cả các thẻ hiện có git taghoặc bạn có thể lọc danh sách git tag -l 'v1.1.*', trong đó *hoạt động như một ký tự đại diện. Nó sẽ trả về một danh sách các thẻ được đánh dấu bằngv1.1 .

Bạn sẽ nhận thấy rằng khi bạn gọi git tagbạn không được xem nội dung của các chú thích. Để xem trước chúng, bạn phải thêm -nvào lệnh của bạn : git tag -n2.

$ git tag -l -n2

Phiên bản v1.0 1.0

Phiên bản v1.1 1.1

Lệnh liệt kê tất cả các thẻ hiện có với tối đa 3 dòng thông điệp thẻ của chúng. Theo mặc định -nchỉ hiển thị dòng đầu tiên. Để biết thêm thông tin hãy chắc chắn kiểm tra bài viết liên quan đến thẻ này là tốt.


0

Đối với một GUI để làm điều này, tôi vừa thấy rằng 'gitk' hỗ trợ các khung nhìn được đặt tên. Các khung nhìn có một số tùy chọn để chọn cam kết. Một tiện dụng là một hộp để chọn "Tất cả các thẻ". Điều đó dường như làm việc cho tôi để xem các thẻ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.