2011-01-16 24 views
71

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

EDIT

Nhờ @ Mark Longair cho thấy làm thế nào điều này có thể được thực hiện từ dòng lệnh git. Nếu nó không thể trong GitHub nó sẽ là một tính năng tuyệt vời để có.

Trả lời

80

Hiện tại, tôi không tin rằng có thể tìm kiếm trong lịch sử hoàn chỉnh mã của kho lưu trữ trên trang web github - gần nhất là 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 this page.

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_info với tùy chọn -S đến git log. ví dụ:

git log -Sget_info -p 

(nb không nên có khoảng trống giữa -S và thời hạn tìm kiếm)

(cũng lưu ý: để tìm kiếm nhiều hơn một từ, vòm trong '):

git log -S'get info' -p 

Vì vậy, ở mức tối thiểu nên tìm thấy các cam kết nơi chức năng được giới thiệu lần đầu tiên và một trong đó loại bỏ nó. Tôi đã thêm -p để bạn cũng có thể xem các bản vá - nếu nhiều cam kết giới thiệu các thay đổi đã đề cập đến chức năng có thể hữu ích. Nếu chức năng chỉ ở 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 chú thích bên dưới mà git 1.7.4 sẽ giới thiệu các tùy chọn -G như một sự thay thế - sự thay đổi này được tóm tắt trong một bài đăng blog gần đây từ Junio ​​Hamano (git duy trì): http://gitster.livejournal.com/48191.html

+2

Vâng, tôi biết Tôi có thể tìm kiếm nhận xét, nhưng tìm kiếm mã thì sao? – normski

+4

Tùy chọn -S * không * tìm trong mã - nó tìm thấy bất kỳ commit nào trong đó 'get_info' được chứa trong phần khác biệt mà commit giới thiệu. Bạn có thể bị nhầm lẫn với tùy chọn '--grep', tìm kiếm các thông điệp tường trình. –

+1

Ah vâng, xin lỗi về điều đó. Cảm ơn vẻ tốt. – normski

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