2011-10-07 33 views
6

Tôi có một dự án Android có mô-đun thử nghiệm sẽ xóa và tạo lại các tệp .apk trong thư mục con trong thư mục git..gitignore và git rm --cách sẽ không giữ các tệp bị theo dõi

Tôi đã thêm những để .gitignore (thư mục, các tập tin một cách rõ ràng, và * .apk) và sau đó tôi đã làm

git rm -r --cached src/main/Tests/bin 

và git nói với tôi:

rm 'src/main/Tests/bin/Tests-debug-unaligned.apk' 
rm 'src/main/Tests/bin/Tests-debug.apk' 
rm 'src/main/Tests/bin/Tests.ap_' 
rm 'src/main/Tests/bin/classes.dex' 

i rồi

git commit . -m "removed apk files" 

Tôi chạy lại các kiểm tra xóa tệp và tạo lại chúng. Tôi chạy trạng thái git và chúng hiển thị dưới dạng sửa đổi. Dường như .gitignore không hoạt động. Dưới đây là .gitignore tôi nộp

*ipr 
*iml 
*iws 
.gitignore 
out/ 
*apk 
src/main/Tests/bin 
src/main/Tests/bin/* 
src/main/Tests/bin/Tests-debug-unaligned.apk 
+0

là vì bạn chưa thêm chúng vào .gitignore sau khi bạn đã xóa chúng? –

Trả lời

1

Tôi vừa thử công thức của bạn và nó đã làm việc cho tôi.

~ % mkdir deleteme 
~ % cd deleteme 
~/deleteme % mkdir src src/main src/main/Tests src/main/Tests/bin 
~/deleteme % touch src/main/Tests/bin/blah.apk     
~/deleteme % git init 
Initialized empty Git repository in /Users/sri/deleteme/.git/ 
~/deleteme (master*) % touch src/main/hello.txt 
~/deleteme (master*) % git add . 
~/deleteme (master*) % git commit -m "init" 
[master (root-commit) 0ef5764] init 
0 files changed, 0 insertions(+), 0 deletions(-) 
create mode 100644 src/main/Tests/bin/blah.apk 
create mode 100644 src/main/hello.txt 
~/deleteme (master) % vi .gitignore 
~/deleteme (master) % git rm -r --cached src/main/Tests/bin 
rm 'src/main/Tests/bin/blah.apk' 
~/deleteme (master*) % git commit -m "removed" 
[master 5ca6456] removed 
0 files changed, 0 insertions(+), 0 deletions(-) 
delete mode 100644 src/main/Tests/bin/blah.apk 
~/deleteme (master) % touch src/main/Tests/bin/blah.apk  
~/deleteme (master) % git status 
# On branch master 
nothing to commit (working directory clean) 
~/deleteme (master) % 

Có lẽ gitconfig trong một số thư mục khác (hoặc chỉ thị chung) ghi đè những gì bạn có trong gitconfig bạn đã nêu. Bạn không đề cập đến trong đó gitconfig này nằm. Xem trang hướng dẫn cho gitignore hoặc tài liệu trợ giúp trực tuyến để ưu tiên các vị trí khác nhau, nơi bạn có thể chỉ định các quy tắc bỏ qua. Các trang người đàn ông nói ...

... theo trình tự sau của ưu tiên, từ cao nhất đến thấp nhất (trong vòng một mức độ ưu tiên, các khớp cuối cùng mẫu quyết định kết quả): Patterns đọc từ lệnh cho các lệnh hỗ trợ chúng.

o Patterns read from a .gitignore file in the same directory as the path, or in any 
     parent directory, with patterns in the higher level files (up to the toplevel of the 
     work tree) being overridden by those in lower level files down to the directory 
     containing the file. These patterns match relative to the location of the .gitignore 
     file. A project normally includes such .gitignore files in its repository, containing 
     patterns for files generated as part of the project build. 

    o Patterns read from $GIT_DIR/info/exclude. 

    o Patterns read from the file specified by the configuration variable core.excludesfile 
0

Bạn đã thử chỉ

*.apk 

trong .gitignore của bạn? Nếu chúng được theo dõi trước đó, bạn sẽ cần phải xóa chúng và cam kết rằng trước khi thiết lập .gitignore. Khi chúng ra ngoài, hãy thêm mục nhập vào tệp .gitignore và nó sẽ hoạt động.

+0

tôi cam kết xóa các tập tin. Tôi biết nó sau đó "nên làm việc", tuy nhiên nó không. – browep

+0

* apk cũng như thư mục họ đang ở và một đường dẫn tuyệt đối chỉ để có biện pháp tốt, cùng một kết quả – browep

+2

làm sạch tệp .gitignore để không có bất kỳ mục nhập .apk nào. Cam kết. Xóa các tập tin apk. git add -A và commit. Chỉ cần thêm * .apk vào tệp bỏ qua. cam kết. bây giờ bạn sẽ bỏ qua các tệp một cách chính xác. Bạn có thể đổ tất cả công việc dọn dẹp này thành một lần commit bằng cách thực hiện git reset --soft head ~ 3 && git add -A && git commit -m "bỏ qua cố định" –

27

tôi nghĩ rằng bạn cần để làm sạch tất cả các file stagged bạn sử dụng:

git rm -r --cached . 

git add -A 

Sau đó cam kết:

git commit -m ".gitignore" 

Nhưng chắc chắn rằng bạn cam kết thay đổi của bạn trước khi làm điều này.

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