Làm thế nào để liệt kê tất cả các thẻ có chứa một cam kết?


227

Câu hỏi này tương tự như Cách liệt kê tất cả các thẻ trỏ đến một cam kết cụ thể trong git , nhưng với một điểm khác biệt: Tôi muốn tìm kiếm tất cả các thẻ có một cam kết cụ thể trong cây của mỗi thẻ, không phải là các tệp được đánh dấu trong thẻ chính nó (trong trường hợp này, chỉ thay đổi Makefile đã được gắn thẻ).


1
Bạn không thể gắn thẻ một tệp cụ thể - các thẻ chỉ trỏ tới các xác nhận. Bạn có thể muốn chỉnh sửa câu hỏi của mình với nhiều chi tiết hơn về vấn đề mà bạn đang thực sự cố gắng giải quyết.
Đánh dấu Longair


Lưu ý: trên Windows, hãy chắc chắn để sử dụng git 2.0.x (2014) nếu bạn muốn git tag --containsđể không sụp đổ. Xem câu trả lời của tôi dưới đây
VonC

Câu trả lời:


348
git tag --contains <commit>

2
Tôi đã thử điều này. Nhưng nếu thẻ chỉ chứa một tệp, tôi tin rằng nó chỉ tìm kiếm thông qua tệp đó. Nó sẽ không tìm kiếm cây. Ngoài ra, kho lưu trữ mà tôi đã thử nó rất lớn, đã bảo lãnh và nhận được SIGKILL'ed.
atx

21
Thẻ không chứa tập tin. Họ chỉ là điểm đánh dấu cho một cam kết. Vì vậy, tôi không nghĩ rằng sự phản đối của bạn có ý nghĩa.
amalloy

Nó không được hiển thị cho tôi cam kết vì thiếu bộ nhớ trong trường hợp đó. Bạn có biết làm thế nào tôi có thể vượt qua điều này?
atx

5
Có cách nào để làm điều này chống lại các thẻ từ xa? Tương tự như với các chi nhánh:git branch -r --contains <commit>
Mike

23

Lưu ý rằng bạn cần git 2.0.x (quý 3 năm 2014) để liệt kê tất cả các thẻ cho một cam kết nhất định nếu bạn có một repo lớn

Xem cam kết cbc60b6 của Jean-Jacques Lafay ( lanfeust69) :

git tag --contains: tránh tràn ngăn xếp

Trong repos lớn, việc thực hiện đệ quy contains(commit, commit_list)có thể dẫn đến tràn ngăn xếp. Thay thế đệ quy bằng một vòng lặp để sửa nó.

Vấn đề này rõ ràng hơn trên Windows so với Linux, trong đó ngăn xếp bị hạn chế nhiều hơn theo mặc định.

Xem thêm chủ đề này trên danh sách msysGit .


9
Không có ý định chơi chữ? ;-)
MikeSchinkel

3
@MikeSchinkel Chà ... ít nhất là không cố ý .
VonC

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.