2012-07-14 40 views
5

Khi tôi xóa một tập tin (hoặc đổi tên nó) bằng cách sử dụng mv, rm hoặc một số cơ sở khác, các tập tin cho thấy như bị xóa khi tôi làm git status:Cách xóa tệp đã bị xóa khỏi .git?

# Changes not staged for commit: 
# (use "git add/rm <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# deleted: ../src/main/..../myFile.java 

Trước khi tạo một cam kết, đó là cồng kềnh để làm git rm <file> cho mỗi tệp, đặc biệt là không có tự động hoàn thành trong thiết bị đầu cuối cho tệp không có ở đó.

Có cách nào ngắn hơn để xóa các tệp đã xóa khỏi tập hợp các tệp được theo dõi bởi git không?

Cảm ơn

+0

Tôi thường chỉ cần sao chép và dán vào trình soạn thảo văn bản, sau đó tìm và thay thế cho hàng loạt trong một lần. –

Trả lời

4

Tôi tin git add -u sẽ làm những gì bạn muốn, từ các tài liệu:

-u 
--update 
    Only match <filepattern> against already tracked files in the index 
    rather than the working tree. That means that it will never stage new 
    files, but that it will stage modified new contents of tracked files 
    and that it will remove files from the index if the corresponding file 
    in the working tree have been removed. 

tham khảo: http://git-scm.com/docs/git-add

1

Đó không phải là chính xác những gì bạn yêu cầu, nhưng bạn có thể thử git commit -a. Từ tài liệu:

Tell the command to automatically stage files that have been modified 
and deleted, but new files you have not told git about are not affected. 
2

Có, git add -u nên thực hiện thủ thuật (cập nhật chỉ mục của bạn với tất cả sửa đổi/xóa). Nếu bạn đã thêm tệp với tên tệp mới của nó, thậm chí bạn sẽ thấy đổi tên trong git status.

3

Khi bạn xóa một số tập tin, hãy nhớ thêm "a" tham số trong cam kết:

$ git commit -am 'Message' 

"a" sẽ tự động xóa tệp khỏi kho lưu trữ

1

câu trả lời của tôi không thực sự giải quyết vấn đề cụ thể này, nhưng ...

Lưu ý rằng không giống như một số VCSes khác, trong Git, lệnh git rm loại bỏ các tập tin cả hai từ chỉ số cây làm việc trừ khi nói khác (sử dụng tùy chọn dòng lệnh --cached). Vì vậy, bạn nên xóa các tệp đã theo dõi của mình bằng cách sử dụng git rm ở nơi đầu tiên: bạn sẽ hoàn thành việc hoàn thành tên tệp của bạn và không cần phải gây rối với việc đồng bộ hóa trạng thái của chỉ mục với cây công việc.

+0

Đúng, nhưng đôi khi tôi đổi tên tệp từ bên trong trình soạn thảo văn bản. Vì tệp có thể nằm sâu trong một cây, hãy nhập 'git rm' và đường dẫn đầy đủ vào tệp có thể mất nhiều thời gian hơn. – axel22

+0

'git mv' trong trường hợp của bạn, nhưng có, nếu không tôi đồng ý. – kostix

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