2011-02-07 36 views
7

tôi đã kiểm một tập tin với những thay đổi mới nhất của tôi để TRỤ do nhầm lẫn ..Undo "git checkout ĐẦU foo.c" trong git scm

git checkout HEAD foo.c 

đó có nghĩa là tôi mất tất cả thay đổi của tôi mà tôi muốn cam kết. ..

có cách nào để tìm những thay đổi này trong bộ nhớ cache git hoặc trong một số lịch sử cục bộ không?

Trả lời

3

Trừ khi bạn đã cam kết, (hoặc lưu trữ hoặc thêm vào chỉ mục) git sẽ không biết về các thay đổi cục bộ của bạn. Vì vậy, không.

7

nếu bạn chưa lưu trữ các thay đổi đối với tệp khi đang làm việc (và sau đó khôi phục chúng) thì có rất ít điều bạn có thể làm.

nếu bạn đã thêm các thay đổi của tệp bằng cách sử dụng git add (bạn có thể có, vì bạn sắp cam kết), thì blob đã có trong git's db. bạn có thể sử dụng git fsck để tìm các vật thể lơ lửng. tìm kiếm các đốm màu và kiểm tra tất cả chúng - hoặc sử dụng git show hoặc git cat-file - (cần thời gian, tôi biết ...), nhưng nếu bạn may mắn, bạn sẽ tìm thấy nội dung tệp của bạn. sử dụng git cat-file blob $hash_of_object > foo.c để khôi phục nội dung tệp của bạn

+0

không may mắn nhưng dù sao cảm ơn bạn! – Mesut

+0

Mesut, Bạn có thêm nó vào git, để mong đợi bất kỳ hình thức phục hồi? –

+0

có nó đã có trong repo nhưng tôi bị mất những thay đổi mới nhất mà tôi đã thực hiện hôm nay ... – Mesut

Các vấn đề liên quan