Цілі Git Ignores та Maven


117

Хтось знає, чи можна ігнорувати всі екземпляри певного каталогу у структурі файлів, керованої git.

Я хочу виключити всі "цільові" папки з проекту Maven з низкою підмодулів. Я знаю, що я можу явно виключити кожен із них у найвищому рівні .gitignore, але я дуже хотів би мати можливість вказати такий зразок, як ** / target / * там, щоб він автоматично ігнорував екземпляр у підкаталогах?

Чи можливо це?


З якою конфігурацією ви робите цю роботу? /.settings/ буде ігнорувати лише 'xxx / .settings / *', а не '.settings / *' або 'xxx / yyy / .settings / *': моделі ігнорування, схоже, не застосовуються рекурсивно. Дивіться також stackoverflow.com/questions/971465/… .
VonC

Відповіді:


98

Можна використовувати шаблони у .gitignoreфайлі. Дивіться сторінку чоловіка gitignore . Шаблон */target/*повинен ігнорувати будь-який каталог з ім'ям target та будь-що під ним. Або ви можете спробувати */target/**проігнорувати все, що знаходиться під ціллю.


4
Дякую! Тут, для кого-небудь іншого, є вміст для .gitignore, щоб пропустити підозрюваних у користувальництві Maven & затемнення. target / * / target / .metadata tar.gz .classpath .project * /. settings /
sgargan

3
З якою конфігурацією ви робите цю роботу? /.settings/ буде ігнорувати лише 'xxx / .settings / *', а не '.settings / *' або 'xxx / yyy / .settings / *': моделі ігнорування, схоже, не застосовуються рекурсивно. Дивіться також stackoverflow.com/questions/971465/… .
VonC

6
Для мультимодульних проектів ви можете використовувати ** / target / , але будьте обережні, щоб не виключити законні "цільові" каталоги у джерелах
Богдан

1
/target/**працює в \.git\info\excludeфайл свердловини.
Абхієет

Щойно спробував здійснити проект Java з "цільовим" підпакетом в одному з його модулів. :(
окутане

222

.gitignoreФайл в кореневій папці дійсно поширюється на всі підкаталоги. Моє виглядає так:

.classpath
.project
.settings/
target/

Це в мультимодульному проекті Maven. Всі підмодулі імпортуються як окремі проекти затемнення за допомогою m2eclipse. Більше ніяких .gitignoreфайлів у мене немає . Дійсно, якщо ви заглянете на сторінку чоловіка gitignore :

Шаблони читаються з .gitignoreфайлу в тому самому каталозі, що і шлях, або в будь-якому батьківському каталозі

Отже, це має працювати для вас.


5
Це краща відповідь, ніж " / target / ". Він не виключає каталог, де б він не знаходився у дереві каталогів. Але це не буде працювати для файлів (див stackoverflow.com/questions/971465 / ... )
VonC

3
якщо ви продовжуєте читати, він говорить: "Ці зразки відповідають відносно місця розташування файлу .gitignore." Ваш одяг помиляється ...
user1387219

Я використовую такий підхід і використовую "target /" для ігнорування всіх папок Maven build, однак будьте обережні, що ви ризикуєте ігнорувати код, який знаходиться в пакетах, що містять папку "target" на своєму шляху. (У проекті з наступними класами: src/main/java/org/example/game/archery/bow/LongBow.java і src/main/java/org/example/game/archery/target/Target.java, ви не знайдете нічого, що вдарить у ваш LongBow з такою конфігурацією .gitignore :-))
Кріштіану Костантіні,

4

Як уже зазначалося в коментарях Abhijeet, ви можете просто додати рядок типу:

/target/**

щоб виключити файл\.git\info\ папці.

Тоді, якщо ви хочете позбутися цієї targetпапки у віддаленому репо, вам потрібно буде спочатку видалити цю папку з локального сховища, ввести її та натиснути її. Це тому, що git покаже вам вміст цільової папки, як було змінено спочатку.


2

Я ігнорую всі класи, що знаходяться в цільовій папці від git. додати наступний рядок у відкритий .gitignore файл:

/ .клас

АБО

* / ціль / **

Це прекрасно працює для мене. Спробуй це.


0

додайте наступні рядки в gitignore з усіх небажаних файлів

/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/
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.