2011-01-07 41 views
222

Làm cách nào để hoàn tác mọi thay đổi được thực hiện cho thư mục của tôi sau lần commit cuối cùng, bao gồm xóa các tệp đã thêm, đặt lại các tệp đã sửa đổi và thêm lại các tệp đã xóa?Đặt lại tất cả thay đổi sau lần commit cuối cùng trong git

+0

có thể trùng lặp của [Hoàn nguyên về cam kết Git trước đó] (http://stackoverflow.com/questions/4114095/revert-to-previous-git-commit) – nawfal

+1

@nawfal có thể trùng lặp, nhưng 'đặt lại tất cả thay đổi sau cam kết cuối cùng 'phù hợp với tiêu chí tìm kiếm nhiều hơn (từ được tìm kiếm trong google) so với tương ứng' cách hoàn nguyên kho lưu trữ git '. Ít nhất là đối với những người như tôi không có tiếng Anh như tiếng mẹ đẻ của họ: d –

Trả lời

409

Đầu tiên thiết lập lại các thay đổi

git reset HEAD --hard 

sau đó làm sạch ra tất cả mọi thứ được theo dõi. Nếu bạn muốn giữ các tệp không được theo dõi do .gitignore, hãy cẩn thận với lệnh này.

git clean -fd 
+6

@Adam: Đôi khi bạn có thể muốn tùy chọn '-x' để' git clean' làm cho nó cũng loại bỏ các tệp bị bỏ qua. – Cascabel

+23

Nếu bạn muốn giữ các tệp không được theo dõi do .gitignore, hãy cẩn thận với lệnh 'git clean -fd'. – bitsoflogic

+3

@Levinaris: Đó là cách khác xung quanh 'git clean -fd' sẽ không xóa các tệp bị bỏ qua. '-x' sẽ. –

32

Làm thế nào tôi có thể hoàn tác mọi thay đổi làm vào thư mục của tôi sau khi cam kết cuối cùng, bao gồm xóa các tập tin bổ sung, đặt tập tin sửa đổi, và thêm lại các tập tin đã bị xóa?

  1. Bạn có thể hoàn tác thay đổi theo dõi file với:

    git reset HEAD --hard 
    
  2. Bạn có thể loại bỏ untracked file với:

    git clean -f 
    
  3. Bạn có thể loại bỏ untracked tập tin và thư mục với:

    git clean -fd 
    

    nhưng bạn không thể hoàn tác thay đổi các tập tin untracked.

  4. Bạn có thể loại bỏ bỏ qua và untracked tập tin và thư mục

    git clean -fdx 
    

    nhưng bạn không thể hoàn tác thay đổi các tập tin bị bỏ qua.

Bạn có thể đặt clean.requireForce-false:

git config --global --add clean.requireForce false 

để tránh sử dụng -f (--force) khi bạn sử dụng git clean.

+1

Tuyệt vời, chỉ là những gì tôi cần. Cảm ơn bạn đã so sánh tất cả các lệnh liên quan! – Marquee

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