2009-09-24 32 views
56

Có cách nào để nhận thẻ được liên kết với số cam kết trong Git không?Tìm thông tin thẻ cho một cam kết cụ thể

Đối với bản phát hành, tôi thường gắn thẻ với nội dung nào đó như v1.1.0. Trong kịch bản xây dựng của tôi, tôi đang tạo một tệp fwVersion.c chứa thông tin git hiện tại. Hiện tại, tôi có cam kết và thông tin chi nhánh trong tệp nhưng tôi muốn thêm thẻ.

Điều này có khả thi không?

Trả lời

73

Kiểm tra các tài liệu cho git describe. Nó tìm thấy thẻ gần nhất với một cam kết cụ thể (đó là một thẻ trỏ đến một tổ tiên của cam kết) và mô tả cam kết đó về mặt thẻ.

Nếu bạn chỉ muốn biết nếu cam kết được trỏ đến bởi một thẻ sau đó bạn có thể kiểm tra đầu ra của:

git describe --exact-match <commit-id> 
+0

Điều này là hoàn hảo, cảm ơn !! – wes

+13

'git description --tags 'cho các thẻ không được ghi nhãn –

+1

Tôi thích điều này. Về bản chất, tôi thích rằng tôi có thể có được một người có thể đọc được từ bản sửa đổi hiện tại: 'git description --all --exact-match \' git rev-parse HEAD \ '' – dsummersl

12

Bạn có thể tìm thấy thông tin này trong cuốn hướng dẫn

git tag --contains <commit> 
+2

Điều này sẽ liệt kê tất cả các thẻ có chứa cam kết đã cho (nghĩa là thẻ trỏ đến con của cam kết đã cho), vì vậy không nhất thiết phải cung cấp một thẻ cho một cam kết cụ thể hoặc bất kỳ thông tin nào về thẻ nào gần nhất , trừ khi danh sách chỉ chứa một cam kết duy nhất. –

+3

Như Charles Bailey đã nói ở trên, đó không phải chính xác những gì tôi đang tìm kiếm. Có lẽ bạn nên RTFM :) – wes

+1

Vâng, xin lỗi vì câu trả lời sai. Khi tôi kiểm tra nó dường như làm những gì bạn đang yêu cầu. Tôi đã làm RTFM, tôi chỉ giải quyết vấn đề sai. Hy vọng Bailey cung cấp một giải pháp giúp bạn. – dharga

46

Nếu những gì bạn muốn là thẻ đầu tiên có chứa các cam kết sau đó:

git describe --contains <commit> 

cung cấp câu trả lời hay nhất IMO. Nếu bạn có thẻ thường xuyên hơn bằng cách sử dụng "git tag --contains" trên một cam kết cũ trong một kho lưu trữ lớn có thể mất một lúc để chạy và cung cấp cho bạn tất cả các thẻ có chứa cam kết đó.

Biểu mẫu git này mô tả chạy rất nhanh và cung cấp cho bạn một giá trị đầu ra duy nhất là thẻ đầu tiên chứa cam kết và cách cam kết của bạn là bao xa.

6

Xin lỗi tôi không biết làm thế nào để chỉ cần thêm một bình luận để đăng câu trả lời ... tôi thấy combo của cả hai ngọn trả lời để cho tôi những gì tôi muốn như vậy:

git describe --tags --exact-match <commit-id> 

Điều này cho phép bạn (các) thẻ CHỈ dành cho cam kết đó và cho những thẻ không có chú thích. Hữu ích khi bạn muốn tìm các thẻ và không phải lo lắng về việc loại bỏ định dạng sau đó (ví dụ như đối với Jenkins).

ví dụ: $ git describe --tags --exact-match head~2

Cung cấp cho bạn:

$ ReleaseBeta 
8

Làm thế nào về điều này?

git tag --points-at <commit-id>

Nó cung cấp cho bạn tất cả các thẻ sự trao cam kết có (trong khi git describe chỉ mang đến cho bạn một), và không bao gồm thẻ trên hậu duệ cam kết (như git tag --contains không).

Các vấn đề liên quan