2009-06-13 38 views
81

Bất cứ ai cũng biết nếu có thể bỏ qua tất cả các phiên bản của một thư mục cụ thể trong cấu trúc tệp do git quản lý.Git Bỏ qua và mục tiêu Maven

Tôi đang tìm cách loại trừ tất cả các thư mục 'đích' trong dự án maven với một số mô-đun phụ. Tôi biết tôi có thể loại trừ một cách rõ ràng mỗi người trong số họ ở cấp cao nhất .gitignore, nhưng tôi thực sự muốn có thể chỉ định một mẫu như **/target/* ở đó để nó tự động bỏ qua cá thể trong thư mục con?

Điều này có khả thi không?

+0

Với cấu hình nào bạn đang thực hiện công việc này? Cài đặt * /./* sẽ chỉ bỏ qua 'xxx/.settings/*', không phải '.settings/*' hoặc 'xxx/yyy/.settings/*': các mẫu bỏ qua dường như không được áp dụng đệ quy. Xem thêm http://stackoverflow.com/questions/971465/git-ignore-certain-files-contained-in-specific-folders. – VonC

Trả lời

67

Có thể sử dụng các mẫu trong tệp .gitignore. Xem gitignore man page. Mẫu */target/* nên bỏ qua bất kỳ thư mục nào có tên là mục tiêu và bất kỳ thứ gì bên dưới nó. Hoặc bạn có thể thử */target/** để bỏ qua mọi thứ theo mục tiêu.

+4

Cảm ơn! Ở đây cho bất cứ ai khác, là nội dung cho một .gitignore để bỏ qua các maven ususal & eclipse nghi phạm. mục tiêu/* */mục tiêu/* .metadata * tar.gz classpath .project * /. Cài đặt/* – sgargan

+2

Với những gì cấu hình bạn làm công việc này? * /. settings/* sẽ chỉ bỏ qua 'xxx/.settings/*', không phải '.settings/*' hoặc 'xxx/yyy/.settings/*': các mẫu bỏ qua dường như không được áp dụng đệ quy. Xem thêm http://stackoverflow.com/questions/971465/git-ignore-certain-files-contained-in-specific-folders. – VonC

+4

Đối với các dự án đa mô-đun bạn có thể muốn sử dụng _ **/target/_, nhưng hãy cẩn thận không loại trừ các thư mục "đích" hợp pháp trong các nguồn – Bogdan

193

Tệp .gitignore trong thư mục gốc không áp dụng cho tất cả các thư mục con. Tôi trông giống như sau:

.classpath 
.project 
.settings/ 
target/ 

Đây là một dự án mô-đun đa mô-đun. Tất cả các mô-đun con được nhập khẩu như các dự án nhật thực cá nhân sử dụng m2eclipse. Tôi không có thêm các tệp .gitignore. Thật vậy, nếu bạn nhìn vào gitignore man page:

Patterns đọc từ một tập tin .gitignore trong cùng thư mục với đường dẫn, hoặc trong bất kỳ thư mục cha ...

Vì vậy, điều này sẽ làm việc cho bạn.

+5

Đó là câu trả lời hay hơn '*/target/*'. Nó loại trừ một thư mục ở bất cứ nơi nào nó nằm trong cây thư mục, nhưng nó sẽ không hoạt động cho các tệp (xem http://stackoverflow.com/questions)/971465/git-ignore-specific-files-chứa-trong-cụ thể-thư mục) – VonC

+0

(+1 bằng cách này) – VonC

+2

nếu bạn tiếp tục đọc nó nói "Những mẫu này khớp với vị trí của tệp .gitignore". Câu trả lời của bạn sai ... – user1387219

1

Như đã chỉ ra trong ý kiến ​​của Abhijeet bạn chỉ có thể thêm dòng như:

/target/** 

để loại trừ tập tin trong thư mục \.git\info\.

Sau đó, nếu bạn muốn loại bỏ thư mục target trong repo từ xa, trước tiên bạn cần phải xóa thư mục này khỏi kho lưu trữ cục bộ của mình theo cách thủ công, sau đó nhấn nó. Thats bởi vì git sẽ hiển thị cho bạn nội dung của một thư mục đích được sửa đổi lúc đầu.

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