2012-10-09 28 views
20

Tôi có một cây thư mục với nhiều loại tệp khác nhau. Có 300 thư mục trên thư mục mẹ. Mỗi thư mục có thể có các thư mục con khác.Định cấu hình git để chỉ theo dõi một phần mở rộng của tệp

Tôi chỉ muốn theo dõi * .cocci trên tất cả các thư mục phụ. Đây là của tôi .gitignore:

* 
!*.cocci 

Nhưng nó không hoạt động vì các tệp trên thư mục phụ không được theo dõi. Làm thế nào tôi có thể nói với git rằng tôi chỉ muốn theo dõi * .occi trên tất cả các thư mục phụ?

+0

Bạn đã thực sự 'git add'ed các tập tin? Chỉ cần thiết lập '.gitignore' không tự động khiến các tệp được theo dõi ... – twalberg

+0

Tôi chỉ có thể thêm tệp nếu tôi sử dụng git add -f . Điều này có vẻ không đúng ... –

+0

bản sao có thể có của [Danh sách trắng và thư mục con trong Git] (http://stackoverflow.com/questions/9162919/whitelisting-and-subdirectories-in-git) – daviesgeek

Trả lời

33

Đọc this question.

Bạn muốn:

# Blacklist everything 
* 
# Whitelist all directories 
!*/ 
# Whitelist the file you're interested in. 
!*.cocci 

Lưu ý, điều này sẽ theo dõi chỉ*.cocci tập tin. Bạn không làm việc vì bạn bỏ qua mọi thứ (đó là dòng đầu tiên), bỏ qua tất cả các thư mục con.

+0

Tôi vẫn không hài lòng với đầu ra trạng thái git vì nó không hiển thị nội dung thư mục không được theo dõi nhưng bộ lọc hiện đang hoạt động. Cảm ơn –

+0

Bạn có thể thay đổi các nhận xét trong câu trả lời của mình không? Họ phải bắt đầu dòng riêng của họ. Nếu bạn dán nó vào một .gitignore, nó sẽ không hoạt động (được thử nghiệm trên v.1.9.1). Xem http://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository#Ignoring-Files – panepeter

+1

Bạn cũng có thể muốn đưa vào danh sách trắng .gitignore –

-1

Bạn đã thử !*/*.cocci thay vì !*.cocci?

+0

Cảm ơn bạn đã tìm mẹo nhưng kết quả ... –

1

Không thể unignore thư mục bằng cách !dir trong .gitignore, nhưng sau đó nó vẫn còn có thể thêm thư mục bằng tay:

git add dir -f 

Vì vậy, nếu các tập tin .gitignore trông giống như:

* 
!*.txt 

Sau đó, khi bạn thực hiện git add . mới *.txt tệp sau đó được thêm vào. thư mục mới sẽ không được tự động thêm vào, nó phải được bổ sung bằng tay bởi git add dir -f

1

Để mở rộng câu trả lời @simont, nếu chúng ta muốn vào danh sách trắng *.cocci tập tin của một thư mục nhất định và thư mục con của nó tôi sai sẽ nhập:

directory/* 
!directory/*/ 
!directory/*.cocci 

Điều đó có vẻ không bao gồm *.cocci tệp dưới directory/subtree.

Để tìm tất cả *.cocci tập tin trong tất cả các thư mục con của directory nhập nội dung sau:

directory/** 
!directory/*/ 
!directory/**/*.cocci 
Các vấn đề liên quan