2010-01-08 29 views
11

"Cannot rewrite branch(es) with a dirty working directory".lỗi git "Không thể viết lại chi nhánh (es) với một thư mục làm việc bẩn"

Tôi mới vào Git - Tôi cố gắng googling cho một câu trả lời vô ích.

Lỗi này có nghĩa là gì? Tôi nên làm gì đây?

+0

nó là git repo đầu tiên của tôi và tôi đã phạm một cái gì đó không thuộc ... phải sửa nó. – jldupont

+0

Tôi gặp vấn đề tương tự và tôi đã gặp phải git. Nếu tôi làm 'git filter-branch --subdirectory-filter somedir - --all' tôi kết thúc với toàn bộ repo của tôi được xử lý nhưng nếu tôi làm' git filter-branch --tree-filter 'rm somefile' - - all' nó thoát sau khi xử lý chi nhánh đầu tiên với lỗi được đề cập ở trên. Tại sao 'filter-branch' lưu trạng thái của' --subdirectory-filter' nhưng dừng nếu '--tree-filter' thay đổi thư mục? –

Trả lời

19

Thư mục hoạt động bẩn có nghĩa là bạn có những thay đổi không được cam kết đối với chi nhánh của bạn. Bạn có thể cam kết hoặc giấu chúng. Để giấu chỉ cần sử dụng:

git stash 

Và sử dụng để mang lại những thay đổi của bạn trở lại

git stash apply 
+0

đã giúp ... cảm ơn! – jldupont

+3

Lưu ý rằng bạn thực sự không có thư mục làm việc bẩn: có lỗi trong git trước 1.7.7.1 có nghĩa là git không làm mới chỉ mục nội bộ của nó khi chạy 'filter-branch'. Vì vậy, hãy thử chạy hai lệnh này anyway - trừ khi bất cứ ai biết một cách ít hacky để buộc làm mới chỉ mục. (Thảo luận thêm về điều này trên [câu hỏi này] (http://stackoverflow.com/questions/6463963/git-filter-branch-says-working-tree-is-dirty-when-it-is-not).) –

+2

Từ một chú thích được thêm vào liên kết ở trên: 'git update-index -q --ignore-submodules --refresh' sẽ cập nhật chỉ mục! –

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