2009-10-21 42 views
10

Tôi muốn bỏ qua các file thực thi mà không có một phần mở rộnggit - bỏ qua tập tin dựa trên chế độ

Ví dụ:

gcc -o foo foo.c 

Tôi biết tôi có thể thêm 'foo' để tập .gitignore của tôi, nhưng nếu tôi quyết định thay đổi tên của tệp thực thi, tôi cần phải cập nhật tệp .gitignore của mình ...

+0

Bạn không thể bỏ qua cơ sở tệp trên chế độ (quyền), nhưng như Jefromi nói bạn có thể bỏ qua tất cả các tệp nhưng những tệp có phần mở rộng. –

Trả lời

8

Thực sự tốt nhất là bạn nên duy trì gitignore theo cách thủ công. Bạn có thể làm điều này:

* 
!*.* 

để loại trừ mọi thứ, sau đó bao gồm mọi thứ bằng ".", Nhưng tôi nghi ngờ các thư mục của bạn không có tiện ích mở rộng. Các thư mục được theo dõi hiện tại vẫn sẽ được theo dõi, tất nhiên, nhưng nếu bạn thêm một cái mới, git-status sẽ không nhìn thấy nó, và bạn phải sử dụng add -f để nhập mã.

Có lẽ không tốt để thừa nhận tất cả tuy nhiên, không nên theo dõi các tệp tiện ích mở rộng. Bạn có thể kết thúc với một số tự nhiên - ví dụ, README và INSTALL là khá phổ biến. Đó là cách tồi tệ hơn để vô tình bỏ qua một tập tin hơn là phải sửa đổi gitignore, quá. Việc sửa đổi gitignore có thể mất vài giây, nhưng nó sẽ hiển nhiên khi bạn cần làm điều đó. Nếu bạn vô tình bỏ qua một tập tin, bạn có thể dễ dàng không kiểm tra nó và mất công việc.

10

Tôi thường xử lý việc này bằng cách sử dụng hacks makefile. Trong Makefile của tôi, tôi có tên của tập tin thực thi $ (tên) và sau đó tôi làm điều này:

#first rule 
all: gitignoreadd ... more depends 
    ... some commands ... 

gitignoreadd: 
    grep -v "$(name)" .gitignore > temp 
    echo $(name) >> temp 
    mv temp .gitignore 

gitignoreremove: 
    grep -v "$(name)" .gitignore > temp 
    mv temp .gitignore 

Quy tắc đó có thể chỉ là phụ thuộc vào nơi nào đó phù hợp. Sau đó, bạn thường có quy tắc 'làm sạch' như sau:

clean: gitignoreremove 
    rm *.o *.othergarbagefiles $(name) 

Điều này nên thực hiện thủ thuật. Đó là một hack nhưng nó làm việc cho tôi. Điều duy nhất là bạn phải chạy sạch sẽ trước khi thay đổi tên để tự động dọn sạch mọi thứ.

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