Bạn có thể thấy cam kết lơ lửng với git log -g
.
-g, --walk-reflogs
Instead of walking the commit ancestry chain, walk reflog entries from
the most recent one to older ones.
Vì vậy, bạn có thể làm điều này để tìm một chuỗi cụ thể trong thông điệp cam kết đang treo lủng lẳng:
git log -g --grep=search_for_this
Ngoài ra, nếu bạn muốn tìm kiếm các thay đổi cho một chuỗi cụ thể, bạn có thể sử dụng tùy chọn tìm kiếm pickaxe, "-S":
git log -g -Ssearch_for_this
# this also works but may be slower, it only shows text-added results
git grep search_for_this $(git log -g --pretty=format:%h)
Git 1.7.4 sẽ thêm tùy chọn -G , cho phép bạn vượt qua -G <regapi> để tìm khi một dòng chứa <regapi> được di chuyển, điều mà -S không thể làm được. -S sẽ chỉ cho bạn biết khi tổng số dòng chứa chuỗi thay đổi (tức là thêm / xóa chuỗi).
Cuối cùng, bạn có thể sử dụng gitk để trực quan hóa các cam kết lơ lửng với:
gitk --all $(git log -g --pretty=format:%h)
Và sau đó sử dụng các tính năng tìm kiếm của nó để tìm tệp thất lạc. Tất cả các công việc này giả sử cam kết bị mất chưa "hết hạn" và đã được thu gom rác, điều này có thể xảy ra nếu nó bị treo trong 30 ngày và bạn hết hạn sử dụng hoặc chạy một lệnh hết hạn.