Điều duy nhất phù hợp với tôi là kiểm tra repo trong một thư mục khác. Giả sử repo hiện tại đang ở trong /home/me/current
.
Sau đó tôi đã làm
git clone /home/me/current /home/me/temp
Điều này tạo một bản sao riêng của repo trong /home/me/temp
Bây giờ tôi có thể đi đến /home/me/temp
và làm bất cứ điều gì tôi muốn. Ví dụ
git reset --hard commit-hash-before-delete
Bây giờ tôi có thể sao chép lại thư mục tệp đã xóa
cp -r /home/me/temp/some/deleted/folder /home/me/current/some/deleted/folder
Và xóa thư mục tạm thời
rm -rf /home/me/temp
Các ví dụ của
git checkout -- some/deleted/folder
git checkout -- some/deleted/folder/*
ĐỪNG LÀM VIỆC
$ git checkout -- some/deleted/folder/*
zsh: no matches found: some/deleted/folder/*
$ git checkout -- some/deleted/folder
error: pathspec 'some/deleted/folder' did not match any file(s) known to git.
Các ví dụ khác như
git reset --hard HEAD
là phá hoại ngoài các tệp đã xóa. Mọi thay đổi khác cũng sẽ bị mất.
Tương tự
git reset --hard some-commit
sẽ mất bất kỳ cam kết nào sau khi some-commit
git status
sẽ cung cấp cho bạn một gợi ý về lệnh gì (s) để chạy