Tôi đã thấy nhiều cách tiếp cận khác nhau để loại bỏ các thay đổi/hoàn nguyên về cam kết trước đó bằng Git. Tôi thường có thể tìm ra cái nào phù hợp với hoàn cảnh của tôi, nhưng trong quá trình này tôi đã khá bối rối bởi những cách tiếp cận khác nhau. Gần đây nhất tôi đã cố gắng để hoàn tác một số tập tin đổi tên và không có vấn đề làm thế nào cứng tôi đã cố gắng để git checkout
các phiên bản cũ của các tập tin tôi vẫn không thể có được các tập tin cũ của tôi trở lại.Cách đúng để hủy thay đổi trong Git
Tôi đang tìm cách làm rõ cách tiếp cận sử dụng và lý do. Đây là sự hiểu biết của tôi về một vài cách tiếp cận. Tôi nhận ra rằng câu trả lời có thể rất theo ngữ cảnh, nhưng tôi muốn thử và phân loại bối cảnh nào yêu cầu phương pháp tiếp cận nào.
1) git checkout -- .
- Được sử dụng để kiểm tra các phiên bản mới nhất của tác phẩm, sẽ ghi đè lên tập tin cũ nhưng sẽ không ảnh hưởng đến xóa, đổi tên, hoặc các tập tin mới.
2) git stash save --keep-index
Tiếp theo git stash drop
- ẩn nấp file không bị giam, sau đó những giọt họ hoàn toàn. Cách tiếp cận tốt nếu bạn đã thực hiện các thay đổi mà bạn muốn giữ lại và những thay đổi không được cam kết/không được cam kết mà bạn muốn hủy.
3) git reset --hard
- Wipes ra tất cả mọi thứ kể từ khi cam kết cuối cùng, bao gồm cả tập tin đổi tên, xóa, và bổ sung.
Đây là hiểu biết hiện tại của tôi về các tùy chọn của tôi. Có bất kỳ thay đổi nào bạn sẽ thực hiện cho các giải thích của tôi không? Tôi cũng không chắc chắn khi nào tôi sẽ sử dụng một số git revert
thay cho các lệnh trên.
bài viết Nguồn:
- Can't seem to discard changes in Git
- How do I discard unstaged changes in Git?
- GIT Discard any changes I've made to a branch
-u làm gì? Tôi thực sự không muốn lấp đầy ngăn xếp của tôi với mã tôi không cần. –
Đừng lo lắng về việc lấp đầy stash của bạn. '-u' ngăn chặn các tệp không được theo dõi ngoài các tệp được theo dõi. Nó cho phép nó hoạt động như reset. –