Cập nhật 2019:
Kể từ tháng 7 năm 2019 , đã có một lệnh mới thực hiện chính xác điều này : git restore
.
Trong git status
, bây giờ Git khuyên bạn nên sử dụng lệnh này thay vì git checkout
như trước đây.
Mặc dù lệnh này cũng có thể được sử dụng để khôi phục cây làm việc theo một cam kết cụ thể hoặc để khôi phục nội dung của chỉ mục, theo mặc định, cây làm việc được khôi phục về trạng thái trong chỉ mục (những gì được hỏi ở đây).
Vì vậy, để khôi phục các tệp khớp với một pathspec (loại bỏ các thay đổi chưa được xử lý của chúng), bạn sẽ làm:
git restore <pathspec>
Chẳng hạn, để khôi phục tất cả các thay đổi chưa được sắp xếp trong thư mục hiện tại, bạn có thể chạy:
git restore .
Nếu bạn chạy nó từ thư mục gốc của dự án, nó sẽ khôi phục tất cả các thay đổi chưa được xử lý trong toàn bộ kho lưu trữ.
Lưu ý rằng, như với git checkout -- .
(như Mariusz Nowak đã chỉ ra), điều này sẽ chỉ loại bỏ các thay đổi đối với các tệp được theo dõi bởi Git và sẽ không loại bỏ bất kỳ tệp mới nào không bị theo dõi. Nếu bạn muốn loại bỏ bất kỳ thay đổi chưa được xử lý nào, bao gồm các tệp mới chưa được theo dõi, bạn có thể chạy bổ sung:
git clean -df
Tuy nhiên, hãy cẩn thận với lệnh sau này vì bạn có thể loại bỏ các tệp mà bạn không có ý định loại bỏ.
Lưu ý về git restore
: vì đây là một lệnh mới, trang man của nó đưa ra cảnh báo:
Lệnh này là thử nghiệm. Hành vi có thể thay đổi.
Vì vậy, có thể câu trả lời này có thể trở nên lỗi thời nếu hành vi không thay đổi trong tương lai. Do đó, có thể là khôn ngoan để chạy nhanh man git-restore
trước khi sử dụng nó.
git-clean
chỉ xóa các tệp không bị theo dõi khỏi cây làm việc git-scm.com/docs/git-clean