2015-08-31 17 views
7

Làm thế nào để tôi xác định tất cả các dòng tồn tại từ một tác giả cụ thể. Ví dụ, một Tony đã làm việc trên dự án của tôi và tôi muốn tìm tất cả các dòng trong nhánh phát triển của tôi mà vẫn tồn tại và từ một cam kết mà Tony đã viết?Tìm tất cả các dòng hiện tại được sửa đổi bởi một tác giả

+0

gì làm những gì bạn muốn khác với những gì 'git đổ lỗi 'cung cấp? – wnoise

+1

@wnoise Tôi đang tìm kiếm một cách để tìm kiếm cơ bản git đổ lỗi cho tất cả các tập tin và chỉ grep chỉ đầu ra cho một tác giả cụ thể. – stevebot

Trả lời

7

Có thể chỉ git blame FILE | grep "Some Name".

Hoặc nếu bạn muốn một cách đệ quy đổ lỗi + tìm kiếm thông qua nhiều file:

for file in $(git ls-files); do git blame $file | grep "Some Name"; done 

Hoặc nếu bạn đang tìm kiếm một số lượng khác so với những gì bạn muốn nhận được từ trên, vui lòng xem xét cập nhật các câu hỏi để được rõ ràng hơn về đầu ra bạn muốn. Lưu ý: Ban đầu tôi đã đề xuất sử dụng phương pháp dưới đây, nhưng vấn đề bạn có thể gặp phải là nó cũng có thể tìm thấy các tệp trong thư mục làm việc của bạn không thực sự được theo dõi bởi git, và do đó, git blame sẽ không cho các tệp đó và phá vỡ vòng lặp.

find . -type f -name "*.foo" | xargs git blame | grep "Some Name" 
7

sideshowbarker chủ yếu là chính xác, nhưng một lệnh cố định thứ hai là:

find . -type f -exec git blame {} \; | grep "Some Name" 

Mặc dù tôi muốn làm:

for FILE in $(git ls-files) ; do git blame $FILE | grep "Some Name" ; done | less 
Các vấn đề liên quan