Tôi vừa làm một
git commit -m "blah"
sau đó tôi đã thêm một số tệp, làm cách nào để khôi phục và loại bỏ những gì trong tệp hiện tại của tôi chưa được thêm / cam kết?
Tôi vừa làm một
git commit -m "blah"
sau đó tôi đã thêm một số tệp, làm cách nào để khôi phục và loại bỏ những gì trong tệp hiện tại của tôi chưa được thêm / cam kết?
Câu trả lời:
Caveat Emptor - Lệnh hủy diệt phía trước.
Giảm nhẹ - git reflog
có thể cứu bạn nếu bạn cần.
1) HOÀN TÁC thay đổi tệp cục bộ và GIỮ cam kết cuối cùng của bạn
git reset --hard
2) HOÀN TÁC thay đổi tệp cục bộ và XÓA cam kết cuối cùng của bạn
git reset --hard HEAD^
3) GIỮ các thay đổi tệp cục bộ và XÓA cam kết cuối cùng của bạn
git reset --soft HEAD^
Nếu bạn muốn loại bỏ nội dung mới được thêm vào và các tệp đã được sắp xếp (đã được thêm vào chỉ mục) thì bạn sử dụng:
git reset --hard
Nếu bạn cũng muốn xóa cam kết mới nhất của mình (là cam kết có thông báo "blah") thì tốt hơn nên sử dụng:
git reset --hard HEAD^
Để xóa các tệp chưa được theo dõi (vì vậy các tệp mới chưa được thêm vào chỉ mục) và các thư mục, hãy sử dụng:
git clean --force -d
git reset --hard
sẽ buộc thư mục làm việc trở lại lần cam kết cuối cùng và xóa các tệp mới / thay đổi.
Bạn có thể hoàn nguyên một cam kết bằng cách sử dụng git revert HEAD^
để hoàn nguyên về cam kết tiếp theo đến cuối cùng. Bạn cũng có thể chỉ định cam kết hoàn nguyên bằng id thay vì HEAD ^
Nếu bạn chỉ muốn bỏ ghi chú lần cam kết cuối cùng, hãy sử dụng cái này:
git reset HEAD~
làm việc như một cái duyên đối với tôi.
Một cách dễ dàng để UNDO tệp cục bộ thay đổi vì lần cam kết cuối cùng là đặt chúng vào một nhánh mới:
git branch changes
git checkout changes
git add .
git commit
Điều này để lại những thay đổi trong nhánh mới. Quay lại nhánh ban đầu để tìm nó trở lại lần cam kết cuối cùng:
git checkout master
Chi nhánh mới là nơi tốt để thực hành các cách khác nhau để hoàn nguyên các thay đổi mà không có nguy cơ làm xáo trộn chi nhánh ban đầu.