GitHub: tìm kiếm qua các phiên bản cũ hơn của tệp


98

Tôi biết rằng sử dụng GitHub, tôi có thể tìm kiếm qua tất cả các phiên bản hiện tại của tệp của mình trong một kho lưu trữ. Tuy nhiên, tôi cũng muốn tìm kiếm các phiên bản cũ hơn của các tệp repo của mình. Ví dụ: giả sử, tôi đã từng có một hàm có tên get_info () trong mã của mình, nhưng đã xóa nó vài phiên bản trước, liệu có thể tìm kiếm get_info và tìm mã không. Nếu không thể sử dụng GitHub, có thể từ dòng lệnh git không?

BIÊN TẬP

Cảm ơn @Mark Longair đã chỉ ra cách thực hiện điều này từ dòng lệnh git. Nếu không thể có trong GitHub thì đó sẽ là một tính năng tuyệt vời cần có.

Câu trả lời:


121

Hiện tại, tôi không tin rằng có thể tìm kiếm trong toàn bộ lịch sử mã của kho lưu trữ trên trang web github - cách gần nhất là chỉ tìm kiếm trong mã hiện tại của kho lưu trữ với tùy chọn "tìm kiếm mã" trên trang này .

Tuy nhiên, từ dòng lệnh, bạn có thể tìm thấy bất kỳ cam kết nào đã giới thiệu hoặc xóa các dòng đề cập đến get_infovới -Stùy chọn đến git log. ví dụ:

git log -Sget_info -p

(nb không được có khoảng trắng giữa -Svà cụm từ tìm kiếm)

(cũng lưu ý: để tìm kiếm nhiều hơn một từ, hãy bao quanh '):

git log -S'get info' -p

Vì vậy, ở mức tối thiểu phải tìm được cam kết nơi hàm được giới thiệu lần đầu và cái đã xóa nó. Tôi đã thêm cái -pđể bạn cũng có thể xem các bản vá - nếu nhiều cam kết đã đưa ra các thay đổi đề cập đến chức năng có thể hữu ích. Nếu hàm chỉ có trên một nhánh khác, nó cũng có thể hữu ích khi sử dụng --allđể tìm kiếm tất cả các nhánh.

Jefromi chỉ ra trong một bình luận bên dưới rằng git 1.7.4 sẽ giới thiệu -Gtùy chọn này như một giải pháp thay thế - thay đổi này được tóm tắt trong một bài đăng blog gần đây từ Junio ​​Hamano (người duy trì git): http://gitster.livejournal.com/48191.html


2
Có, tôi biết tôi có thể tìm kiếm bình luận, nhưng còn tìm kiếm mã thì sao?
Normki

10
Tùy chọn -S trong mã - nó tìm thấy bất kỳ cam kết nào get_infođược chứa trong khác biệt mà cam kết giới thiệu. Bạn có thể nhầm lẫn với --greptùy chọn tìm kiếm thông báo nhật ký.
Mark Longair

2
@normski: Và các phiên bản git gần đây đã thêm -Gtùy chọn tương tự , tùy chọn này sử dụng regex thay vì một chuỗi cố định.
Cascabel

@Jefromi: cảm ơn vì đã đề cập đến điều đó - Tôi đã thêm điều đó vào câu trả lời, hy vọng điều đó ổn.
Mark Longair

2
@Anthony Damico: yes, chỉ trích chuỗi tìm kiếm, ví dụ:git log -S'get info' -p
Đánh dấu Longair
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.