2010-11-11 21 views
17

Tôi thường gặp điều này. Tôi đang làm việc trên một nhánh chính và tôi cần thử nghiệm một plugin, vì vậy tôi tạo một nhánh mới và kiểm tra nó. Tôi tải về các plugin vào thư mục dự án và kiểm tra nó ra. Sau đó, tôi chuyển trở lại nhánh chính và xóa nhánh mà tôi đã tạo.Tại sao Git không xóa một số tệp khi tôi chuyển chi nhánh?

Điều gì xảy ra cuối cùng là các tệp của plugin vẫn còn trong thư mục dự án. Tôi tự hỏi nếu đây là hành vi bình thường. Tôi phải làm gì để có sự chuyển đổi liền mạch giữa các chi nhánh?

+0

@ipsum: Trả lời? –

+3

git sẽ không xóa các tập tin không được bảo vệ khỏi bản sao làm việc của bạn, vì vậy trừ khi bạn thêm các tập tin của plugin và tạo một cam kết trên nhánh git mới sẽ không làm bất cứ điều gì với các tệp plugin của bạn – knittl

+1

@knittl: * đó là câu trả lời. Cũng có thể đăng nó. (Cùng với một đề cập đến 'git clean', có lẽ.) – Cascabel

Trả lời

12

git sẽ không xóa các tệp không được theo dõi khỏi bản sao làm việc của bạn, vì vậy trừ khi bạn thêm tệp của plugin và tạo một cam kết trên nhánh git mới sẽ không làm bất kỳ điều gì với tệp plugin của bạn.

nếu bạn muốn loại bỏ tập tin untracked từ cây làm việc của bạn, sử dụng git clean - hãy cẩn thận, nó sẽ loại bỏ bất kỳ tập tin untracked từ đĩa và không có cách nào để phục hồi từ đó (không sử dụng phần mềm phục hồi)

+0

Tiềm năng nguy hiểm của 'git clean', tất nhiên, là lý do tại sao nó thậm chí sẽ không làm bất cứ điều gì trừ khi bạn vượt qua tùy chọn' -f'. (Có thể hữu ích cho trường hợp này - bạn có thể sử dụng nó trên các đường dẫn cụ thể.) – Cascabel

+0

lý do tại sao "git sẽ không xóa các tập tin không được theo dõi khỏi bản sao làm việc của bạn"? 'git add' tiếp theo của tôi sẽ thêm những tệp không được theo dõi đó từ nhánh khác? – joetsuihk

+0

@joetsuihk: các tệp không được theo dõi trong thư mục làm việc không thuộc về bất kỳ nhánh nào, chúng thuộc về thư mục làm việc. nếu bạn 'git add' untracked files, chúng sẽ được bao gồm trong cam kết tiếp theo – knittl

0

thử kiểm tra -f

thấy git --help thanh toán:

Tiến hành ngay cả khi chỉ số hoặc cây làm việc khác với HEAD. Điều này được sử dụng để vứt bỏ các thay đổi cục bộ.

+2

Tôi không nghĩ đây là những gì mà OP gặp phải. Việc thanh toán tiền thu được, nhưng để lại một số tệp ở đó. – Cascabel

+0

Tôi đồng ý với Jefromi –

0

Nếu bạn là chuyển đổi qua lại giữa các chi nhánh nơi cấu trúc thư mục khác nhau, và bạn thấy rằng có một số hiện vật còn sót lại, bạn có thể cần phải chạy:

git clean -df 

này sẽ "xóa" "lực lượng". Bạn sẽ mất TẤT CẢ các tệp không được theo dõi, tôi nghĩ rằng điều này có thể là một bước xa:

git reset --hard 
Các vấn đề liên quan