2010-06-24 28 views
44

trạng:Sử dụng git, làm cách nào để bạn đặt lại cây đang hoạt động về trạng thái của chỉ mục?

  1. Chỉnh sửa file
  2. Thêm tệp vào chỉ số
  3. Chỉnh sửa nhiều file

Bây giờ chúng tôi có ba trạng thái khác nhau. Trạng thái của HEAD, trạng thái của chỉ mục và trạng thái của cây làm việc. Lệnh để hoàn tác các thay đổi trong cây làm việc sao cho nó phù hợp với trạng thái của chỉ mục?

Trả lời

51

Tôi có xu hướng sử dụng git checkout . để loại bỏ tất cả thay đổi khỏi thư mục hoạt động. Điều này tạo ra sự khác biệt nếu bạn không ở gốc của kho lưu trữ.

Lệnh này không xóa các tệp mới được tạo thường là điều tốt. Nếu bạn cần làm điều này thì bạn cũng có thể sử dụng git clean.

+1

Đã thử nghiệm những điều này và chúng là những gì tôi đang tìm kiếm. Cảm ơn. – haydenmuhl

+0

Điều này cũng làm việc với một tên tập tin duy nhất: 'git checkout [file ...]'. Cảm ơn! – naught101

+0

Ngoài sự tò mò, bạn có biết cách hoàn tác điều này không? –

8

Bạn có thể sử dụng git-checkout-index. Hãy nhận biết rằng bạn cần phải thêm

  • -f để buộc nó để ghi đè lên file hiện có, hoặc
  • -f -a để thực thi ghi đè lên tất cả các đường dẫn trong chỉ mục.
14

Bạn có thể sử dụng git stash save --keep-index để thực hiện việc này. Sau khi lưu stash, bạn có thể sử dụng git stash drop nếu bạn không muốn giữ nó xung quanh.

+0

Điều này thật khó hiểu khi tôi hiểu nhầm điều gì đó. Những gì tôi muốn làm là 'git reset --hard ' đã hợp nhất các xung đột, để tôi có thể chỉ 'git pull' phiên bản mới nhất. Nhưng git sẽ không cho phép tôi làm điều đó cho các tập tin cá nhân. Có thực sự không có cách nào để quay trở lại thay đổi vào một tập tin trong thư mục làm việc ngoài git stash ?? – Andy

+1

@Andy: Để quay lại một tệp cụ thể, 'git checkout - '. –

+0

Ồ! Tôi thậm chí không nghĩ về điều đó, điều đó khác với các công cụ SCM và GUI khác mà tôi đến từ đó. Cảm ơn! – Andy

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