2010-11-20 26 views

Trả lời

108

Kể từ git là một VCS phân phối, kho địa phương của bạn có chứa tất cả các thông tin. Không cần tải xuống; bạn chỉ cần trích xuất nội dung bạn muốn từ repo trong tầm tay bạn.

Nếu bạn chưa cam kết xoá, chỉ cần kiểm tra các tập tin từ hiện tại của bạn cam kết:

git checkout HEAD <path> 

Nếu bạn đã cam kết xoá, bạn cần phải kiểm tra các tập tin từ một cam kết rằng có họ . Có lẽ nó sẽ là trước đó cam kết:

git checkout HEAD^ <path> 

nhưng nếu nó n cam kết trước đây, sử dụng HEAD~n, hoặc đơn giản là cháy lên gitk, tìm SHA1 của phù hợp cam kết, và dán nó vào

+1

cũng giống như một bình luận bên, điều này cũng làm việc cho một thư mục đầy đủ, nó không đặc biệt hoặc cụ thể cho một tập tin duy nhất (nó làm việc khi tôi đã thử nó ít nhất). Thnx btw. –

+0

N.B. '' là bắt buộc, ngay cả khi chỉ là '.' dot cho dir hiện tại. Nhưng "nhánh" ('HEAD' trong ví dụ trên) là tùy chọn. Như với rất nhiều lệnh Git, cả đầu ra lẫn trợ giúp đều không hữu ích. – MarkHu

2

Bạn cần phải kiểm tra một phiên bản trước đó từ trước khi bạn xóa các tập tin. Hãy thử git checkout HEAD^ để kiểm tra bản sửa đổi cuối cùng.

23

git checkout filename

git reset --hard thể làm như lừa cũng

+5

cảnh báo tho bằng cách sử dụng phương pháp 'git reset --hard' để hoàn nguyên toàn bộ cây trở lại vị trí bạn đặt HEAD/HEAD ^/HEAD ~ n và nó sẽ làm điều đó thành kiến ​​và có khả năng mất rất nhiều cam kết ... – g19fanatic

+0

git reset --hard làm việc cho tôi, cảm ơn cậu bé :) –

+0

git checkout filename là câu trả lời cho tôi :) – Ruub

12

Nếu bạn. đã xóa nhiều file tại địa phương nhưng không cam kết, bạn có thể buộc thanh toán

$ git checkout -f HEAD 
+0

Như chúng ta thấy từ đầu ra "Đã cập nhật", người hỏi câu hỏi này chưa cam kết bất cứ điều gì gần đây. Bạn có nên chỉ ra rằng git checkout -f HEAD là NGUY HIỂM? Vì nó có thể hoàn tác các thay đổi cục bộ không được cam kết (khôi phục các tệp trước đó là kết quả tích cực, mất các thay đổi đối với các tệp đã chỉnh sửa là tệp phủ định). –

0

Ngoài ra, tôi thêm vào làm các bước sau để các repo git sẽ được liên kết một cách chính xác với IDE:

$ git reset <commit #> 

$ git checkout <file/path> 

Tôi hy vọng điều này hữu ích !!

0

Nếu bạn đã xóa nhiều tệp cục bộ và không cam kết thay đổi, hãy chuyển đến đường dẫn lưu trữ cục bộ của bạn, mở vỏ và loại git.

$ git checkout HEAD . 

Tất cả các tệp đã xóa trước lần commit cuối cùng sẽ được khôi phục.

Thêm "." sẽ khôi phục tất cả các tệp đã xóa trong kho lưu trữ hiện tại, tới đường dẫn tương ứng của chúng.

Để biết thêm chi tiết, hãy kiểm tra documentation.

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