Làm thế nào tôi giải quyết vấn đề này? Sử dụng git fsck
và đăng nhập!
Đầu tiên tạo một tệp chứa các xác nhận và các đốm màu bị mất (không thể truy cập). (LƯU Ý: nếu bạn đã làm một cái gì đó như thế git gc
thì nó sẽ thu gom tất cả những gì họ cam kết và bạn sẽ không tìm thấy chúng ở đây!)
$git fsck --lost-found > lost_found.commits
Điều đó cung cấp cho bạn một tập tin như thế này:
tòn ten cam dec2c5e72a81ef06963397a49c4b068540fc0dc3
lủng lẳng blob f8c2579e6cbfe022f08345fa7553feb08d60a975
lủng lẳng blob 0eb3e86dc112332ceadf9bc826c49bd371acc194
lủng lẳng blob 11cbd8eba79e01f4fd7f496b1750953146a09502
tòn ten cam 18733e44097d2c7a800650cea442febc5344f9b3
lủng lẳng blob 1e53a5cdb3ecdde27081ec6e8b31e4070106ee05
Sau đó, bạn có thể mở tệp này với trình soạn thảo văn bản yêu thích của mình để sao chép các băm cam kết / blog từ đó. (* ho * vim macro hoạt động tuyệt vời cho việc này * ho *)
Bây giờ bạn có thể đăng nhập lại từ cam kết này với một cái gì đó như git log --oneline <commit hash>
. Ngoài ra, gitk, tig hoặc bất kỳ người xem git nào khác nên hoạt động.
Trong trường hợp của bạn nếu bạn tìm thấy hàm băm cho cam kết F, nhật ký sẽ hiển thị cho bạn một cái gì đó như thế này,
A---B---E---F
Nhanh chóng và dễ dàng! Bây giờ bạn có thể tìm thấy bối cảnh đằng sau tất cả những cam kết lơ lửng đó.
PS Vâng, tôi biết, bài đăng muộn, nhưng ồ, ai đó có thể tìm thấy nó ở đây và thấy nó hữu ích. (Chủ yếu là tôi sau 6 tháng nữa khi tôi google lại lần nữa)
commit --amend
hoặcrebase
một người vô tình mồ côi bằng cách làm việc với một TRƯỞNG tách rời, nói.