2010-10-18 9 views
6

Tôi đã chạy một số git pull --rebase và hủy bỏ điều này sau khi sửa một số xung đột hợp nhất bằng cách sử dụng git rebase --abort.Git: khôi phục kho lưu trữ được phân tách sau khi không thể phục hồi

Trước khi thử lại, git status đã nói với tôi: "Chi nhánh của bạn ở phía trước 'gốc/chủ' của 20 cam kết". Bây giờ tôi nhận được: "Chi nhánh của bạn và" nguồn gốc/chủ "đã phân kỳ, và có 15 và 5 (các) cam kết khác nhau, tương ứng."

Tôi đã đặt lại cam kết mới nhất (git reset --hard c15...e30), nhưng thông báo trạng thái vẫn như cũ.

Làm cách nào để hoàn nguyên kho lưu trữ của tôi về trạng thái trước khi tôi bắt đầu mớ hỗn độn? Và sự khác biệt giữa trạng thái hiện tại và trạng thái trước đó là gì?

Cảm ơn.

+1

Báo cáo trạng thái git làm chi nhánh hiện tại của bạn (dòng đầu tiên của đầu ra) là gì? Ngoài ra, để tham khảo, băm cam kết có liên quan cho nguồn gốc/chủ, yourbranch là gì và bạn đang ở đâu (trên cùng của "git log")? Sử dụng gitk --all để cung cấp cho bạn một bức tranh tốt hơn nếu bạn cần. –

Trả lời

1

git rebase --abort sẽ đưa bạn quay lại HEAD ban đầu của bạn. Tôi không chắc chắn những gì bạn có nghĩa là "sửa chữa một số xung đột-sáp nhập bằng cách sử dụng ... hủy bỏ". Ý của bạn là --continue?

Dù sao thì, việc cần làm bây giờ là tham khảo ý kiến ​​của việc khôi phục. Việc reflog là một bản ghi thời gian, địa phương nơi tất cả các tài liệu tham khảo của bạn đã được. Nếu bạn nhìn vào .git/logs/HEAD bạn có thể thấy nơi HEAD (bộ làm việc) đã được. Dưới .git/logs/refs/... bạn có thể thấy nơi mà tất cả các chi nhánh của bạn (địa phương và từ xa) đã được. Mỗi dòng trong nhật ký phản ánh một số hành động. Bắt đầu SHA, kết thúc, người dùng, thời gian và chuỗi mô tả hành động nào đã gây ra thay đổi. Bạn có thể tìm thấy cái bạn muốn và reset quay lại.