Tôi có một đoạn mã khác với nhánh hiện tại của tôi trong repo git, và tôi không chắc chắn commit nào và nhánh nào. Làm thế nào tôi có thể tìm kiếm trong tất cả các tệp mà tôi đã cam kết cho đến bây giờ cho một chuỗi cụ thể (và sau đó hiển thị xung quanh dòng mã đó)?Git-Repo tìm kiếm chuỗi trong tất cả các tệp đã cam kết (chi nhánh chưa biết và cam kết)
Trả lời
Sử dụng git grep
để xác định vị trí cam kết:
git grep "string" $(git rev-list --all)
Các git rev-list --all
làm cho nó tìm kiếm toàn bộ lịch sử của dự án.
Điều đó sẽ đưa ra một sản lượng như thế này:
<commit>:<path>:<matched line>
Sau đó, bạn có thể sử dụng git branch --contains
để tìm ra các chi nhánh cam kết là:
git branch --contains <commit>
Tôi có thể chỉ định để tìm kiếm trong chỉ một tệp/đường dẫn không? (Ví dụ: Tôi đang tìm kiếm một vật cố định cụ thể và chỉ muốn tìm kiếm trong đường dẫn này) –
Có: 'git grep" string "$ (git rev-list --all) - đường dẫn'. – jszakmeister
điều này không hoạt động cho lịch sử lớn: ( 'git grep 'abc' echo $ (git rev-list --all)' 'zsh: danh sách đối số quá dài: git' – tback
thay đổi chi nhánh bằng git branch "branch-name"
và sau đó thực hiện git grep "specific string"
trong thư mục gốc của kho lưu trữ. nếu bạn không có quá nhiều nhánh, điều này sẽ giúp bạn có đủ nhanh.
Nếu git grep "string"
biến trên được đem lại cho bạn " danh sách quá dài "lỗi, bạn có thể sử dụng git log -S
để thay thế. Các tùy chọn -S tìm kiếm các nội dung của các tập tin đã được cam kết: (. Khác ở các "Pro Git" cuốn sách dưới "searching")
git log -Sstring # look for string in every file of every commit
git log -Sstring -- path/to/file # only look at the history of the named file
- 1. Xóa tất cả các cam kết trong một chi nhánh sau khi cam kết nhất định
- 2. Kéo tất cả các cam kết từ một chi nhánh, đẩy cam kết nào đó sang
- 3. Git squash tất cả các cam kết trong chi nhánh mà không xung đột
- 4. git: Cam kết công việc hiện tại chưa được cam kết trong nhánh hiện tại đến chi nhánh mới
- 5. Có thể áp dụng cam kết cho tất cả các chi nhánh trong git không?
- 6. Tìm cam kết đầu tiên cụ thể cho chi nhánh
- 7. Hiển thị tất cả các nhánh cam kết A đang bật và cam kết B không bật?
- 8. Cấp chi nhánh SVN cam kết quyền
- 9. Hg gần như đã cam kết sai chi nhánh
- 10. git dàn dựng và cam kết giữa nhiều chi nhánh
- 11. Cam kết thay đổi cho nhiều chi nhánh trong Git
- 12. Cam kết tất cả các tệp đã sửa đổi cho Github trong Netbeans
- 13. git cam kết xóa tất cả các tệp trong repo
- 14. Làm thế nào để di chuyển tất cả các cam kết từ một chi nhánh khác?
- 15. Tôi làm cách nào để tìm danh sách các tệp được cam kết với chi nhánh?
- 16. Hiển thị các chi nhánh không chứa cam kết
- 17. Liệt kê tất cả các cam kết (trên tất cả các nhánh) đối với một tệp nhất định
- 18. Đổi tên cam kết thành chi nhánh trong Mercurial
- 19. Số cam kết trên chi nhánh trong git
- 20. Tìm kiếm các cam kết git Sử dụng Regex
- 21. Git cam kết submodule chung (chi nhánh chính)
- 22. Squash cam kết trên tổng thể nhưng tách biệt các cam kết trên chi nhánh tính năng?
- 23. Di chuyển các cam kết từ một chi nhánh này sang một chi nhánh khác
- 24. SVN - Nhận tất cả thư cam kết cho một tệp?
- 25. Từ chủ, cam kết đến một chi nhánh khác
- 26. git-svn cố gắng cam kết sai chi nhánh
- 27. cách cam kết thay đổi chi nhánh mới
- 28. git push: Đẩy tất cả các cam kết ngoại trừ số cam kết cuối cùng
- 29. cách di chuyển các thay đổi đã cam kết nhưng chưa được hủy bỏ sang chi nhánh khác?
- 30. Làm thế nào để git cam kết --amend một cam kết đó là cơ sở của một chi nhánh
có thể trùng lặp: http://stackoverflow.com/questions/ 746684/cach-to-search-through-all-cam kết-trong-kho-lưu trữ –