2012-08-14 28 views
9

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:

Trả lời

9
git stash -u 

là cách ưa thích. Đừng thả. Họ sẽ không bị đẩy. Trong trường hợp bạn đã làm một cái gì đó bạn phát hiện ra là quan trọng, bạn có thể lấy lại chúng.

Các lựa chọn khác của bạn là phá hoại.

Hoàn nguyên đang thêm cam kết mới vào lịch sử áp dụng đối diện với bản vá mà cam kết đã giới thiệu. Lựa chọn của bạn ở đây là cho những gì bạn muốn làm với những thay đổi trong worktree của bạn mà không phải là một phần của lịch sử. Hoàn nguyên dành cho các thay đổi được cam kết là một phần của lịch sử.

+0

-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. –

+0

Đừ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. –

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