Git bỏ qua và mục tiêu Maven


117

Bất cứ ai biết nếu có thể bỏ qua tất cả các trường hợp của một thư mục cụ thể trong cấu trúc tệp được quản lý bởi git.

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

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


Với cấu hình nào bạn đang làm cho nó hoạt động? /.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 stackoverflow.com/questions/971465/… .
VonC

Câu trả lời:


98

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


4
Cảm ơn! Ở đây cho bất kỳ ai khác, là nội dung cho một .gitignore để bỏ qua các nghi ngờ maven & eclipse đã mãn kinh. mục tiêu / * / mục tiêu / .metadata tar.gz classpath .project * / cài đặt /.
sgargan

3
Với cấu hình nào bạn đang làm cho nó hoạt động? /.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 stackoverflow.com/questions/971465/… .
VonC

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

1
/target/**hoạt động tốt trong \.git\info\excludehồ sơ.
Abhijeet

Chỉ cần cố gắng thực hiện một dự án java với gói con "đích" trong một trong các mô-đun của nó. :(
okutane 14/03/17

222

Các .gitignoretập tin trong thư mục gốc không áp dụng đối với tất cả các thư mục con. Của tôi trông như thế này:

.classpath
.project
.settings/
target/

Đây là một dự án maven nhiều mô-đun. Tất cả các mô-đun con được nhập dưới dạng các dự án nhật thực riêng lẻ bằng cách sử dụng m2eclipse. Tôi không có .gitignoretập tin nào khác. Thật vậy, nếu bạn nhìn vào trang gitignore man :

Các mẫu đọc từ một .gitignoretệp trong cùng thư mục với đường dẫn hoặc trong bất kỳ thư mục mẹ nào

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


5
Đó là một câu trả lời tốt hơn so với ' / target / '. Nó không loại trừ một thư mục ở bất kỳ vị trí nào trong cây thư mục. Nhưng nó sẽ không hoạt động đối với các tệp (xem stackoverflow.com/questions/971465/… )
VonC

3
nếu bạn tiếp tục đọc, nó sẽ cho biết "Các mẫu này khớp với vị trí của tệp .gitignore." Answear của bạn là sai ...
user1387219

Tôi sử dụng cách tiếp cận này và sử dụng "target /" để bỏ qua tất cả các thư mục xây dựng maven, tuy nhiên, hãy cẩn thận rằng bạn có nguy cơ bỏ qua mã nằm trong các gói chứa thư mục "đích" trong đường dẫn của chúng. (Trong một dự án với các lớp sau: src/main/java/org/example/game/archery/bow/LongBow.javasrc/main/java/org/example/game/archery/target/Target.java, bạn sẽ tìm thấy không có gì để hit với Longbow của bạn với cấu hình .gitignore như vậy :-))
Cristiano Costantini

4

Như đã được chỉ ra trong phần bình luận của Abhijeet, bạn chỉ cần thêm dòng như:

/target/**

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

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


2

Tôi bỏ qua tất cả các lớp nằm trong thư mục đích từ git. thêm dòng sau vào tệp .gitignore đang mở:

/ .class

HOẶC LÀ

*/Mục tiêu/**

Nó đang hoạt động hoàn hảo đối với tôi. thử nó.


0

thêm các dòng sau trong gitignore, từ tất cả các tệp không mong muốn

/target/
*/target/**
**/META-INF/
!.mvn/wrapper/maven-wrapper.jar

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/build/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.