2011-08-09 43 views
7

Tôi đã tìm kiếm thông qua các câu hỏi khác nhưng không thể tìm thấy giải pháp làm việc cho dự án của mình. Có dự án Magento, tôi muốn loại trừ mọi thứ ngoại trừ điều này:Git bỏ qua tất cả trừ thư mục con

/app/design/frontend/default/theme_name # and obviously all subfolders 
/skin/frontend/default/theme_name # and all subfolders 

Tôi đã thử rất nhiều kết hợp nhưng không may mắn. Hiện tại tôi bị kẹt với tệp .gitignore này:

* 
!/app/ 
!/app/* 

app/* 
!/app/design/ 
!/app/design/* 

Nhưng nó không hoạt động đệ quy bên dưới thư mục thiết kế. Nó chỉ thêm một tệp thử nghiệm bên trong thư mục thiết kế mà tôi đã tạo.

Trả lời

5

Nhìn vào câu trả lời của tôi ở đây: Can't understand how gitignore ignores the folders

Trích dẫn từ rằng:

Các cuộc thảo luận sau đây là hữu ích: http://git.661346.n2.nabble.com/negated-list-in-gitignore-no-fun-td1675067.html , đặc biệt là sau từ Linus:

Đó là do thiết kế. Bạn đã chọn bỏ qua các thư mục đó; họ khớp với chính "*". Do đó, 'git add.' không đi sâu vào chúng tìm kiếm tệp.

Vì vậy, về cơ bản, đối với mỗi cấp bạn phải đi vào, hãy hủy bỏ thư mục đó, và bỏ qua nội dung trong thư mục đó.

Ngoài ra, bạn nên xem xét có .gitignore tại thư mục con chứ không phải ở cấp độ gốc chỉ khi nó trở nên khá phức tạp nếu bạn phải đi đến cấp độ thư mục con từ gốc .gitignore vì lời giải thích trên, theo đó cho mỗi cấp , bạn phải unignore thư mục và sau đó bỏ qua các nội dung và như vậy.

+0

Cảm ơn, nó đã giúp tôi hiểu mọi thứ hoạt động như thế nào với git :) – s3v3n

+0

Lỗi được lập trình theo thiết kế: o –

+0

@B Gordon - Đó là Linus cho bạn: D – manojlds

5

Đã thực hiện một số nghiên cứu tại đây. Những gì đã làm việc cho tôi là:

/* 
!/directory 
!/another 
/another/* 
!/another/directory 

Với thư mục con này là /directory được theo dõi chính xác. Thật kỳ lạ, nó không hoạt động với chỉ / hoặc chỉ * trên dòng đầu tiên - Tôi không chắc chắn tại sao.

+0

Thật không may '!/Another/directory' không hoạt động đối với tôi. Tôi nên bỏ qua/unignore trên mỗi cấp độ. – s3v3n

+0

Tôi tự hỏi nếu nó phụ thuộc vào phiên bản git.Tôi đang sử dụng 'git phiên bản 1.7.4.1' –

+0

Tôi có chính xác' $ git --version' 'git phiên bản 1.7.4.1' – s3v3n

0
/** 
!/**/ 
!/app/design/frontend/default/theme_name/** 
!/skin/frontend/default/theme_name/** 

Giải thích:

  1. bỏ qua tất cả các file và thư mục, đệ quy (chú ý dấu kép).
  2. loại trừ tất cả các thư mục, đệ quy (git theo thiết kế sẽ không cam kết thư mục trống, thư mục chứa đầy tệp bị bỏ qua được tính là. Chúng tôi cần điều này sao cho hai thư mục tiếp theo không bao gồm công việc)
  3. loại trừ tất cả tệp và thư mục, đệ quy , từ vị trí này.
  4. loại trừ tất cả các tệp và thư mục, đệ quy, khỏi vị trí này.

Tôi thường làm điều này với các thư mục con, vì vậy tôi không biết liệu dòng đầu tiên có hoạt động hay không.

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