Git ignora e bersagli Maven


117

Qualcuno sa se è possibile ignorare tutte le istanze di una determinata directory in una struttura di file gestita da git.

Sto cercando di escludere tutte le cartelle "target" in un progetto Maven con un numero di sottomoduli. So di poter escludere esplicitamente ciascuno di essi in un .gitignore di livello superiore, ma mi piacerebbe davvero essere in grado di specificare un pattern come ** / target / * per far sì che ignori automaticamente l'istanza nelle sottodirectory?

È possibile?


Con quale configurazione stai facendo questo lavoro? /.settings/ ignorerebbe solo "xxx / .settings / *", non ".settings / *" o "xxx / yyy / .settings / *": i modelli di ignoranza non sembrano essere applicati in modo ricorsivo. Vedi anche stackoverflow.com/questions/971465/… .
VonC

Risposte:


98

È possibile utilizzare modelli in un .gitignorefile. Vedere la pagina man di gitignore . Il modello */target/*dovrebbe ignorare qualsiasi directory denominata target e qualsiasi cosa sotto di essa. Oppure puoi provare */target/**a ignorare tutto ciò che è sotto l'obiettivo.


4
Grazie! Qui per chiunque altro, è contenuto per un .gitignore per saltare i soliti sospetti esperti ed eclissi. target / * / target / .metadata tar.gz .classpath .project * /. settings /
sgargan

3
Con quale configurazione stai facendo questo lavoro? /.settings/ ignorerebbe solo "xxx / .settings / *", non ".settings / *" o "xxx / yyy / .settings / *": i modelli di ignoranza non sembrano essere applicati in modo ricorsivo. Vedi anche stackoverflow.com/questions/971465/… .
VonC

6
Per progetti multimodulo potresti voler usare ** / target / , ma fai attenzione a non escludere legittime directory "target" nei sorgenti
Bogdan

1
/target/**funziona in \.git\info\excludefile un pozzo.
Abhijeet

Ho appena provato a eseguire il commit di un progetto java con il sottopacchetto "target" in uno dei suoi moduli. :(
okutane

222

Il .gitignorefile nella directory principale si applica a tutte le sottodirectory. Il mio assomiglia a questo:

.classpath
.project
.settings/
target/

Questo è in un progetto Maven multi-modulo. Tutti i sottomoduli vengono importati come singoli progetti eclipse utilizzando m2eclipse. Non ho altri .gitignorefile. Infatti, se guardi nella pagina man di gitignore :

Pattern letti da un .gitignorefile nella stessa directory del percorso o in qualsiasi directory padre ...

Quindi questo dovrebbe funzionare per te.


5
Questa è una risposta migliore di " / target / ". Esclude una directory ovunque si trovi nell'albero delle directory. Ma non avrebbe funzionato per i file (vedi stackoverflow.com/questions/971465/... )
VonC

3
se continui a leggere, viene visualizzato il messaggio "Questi pattern corrispondono rispetto alla posizione del file .gitignore". La tua risposta è sbagliata ...
user1387219

Uso questo approccio e utilizzo "target /" per ignorare tutte le cartelle di build di Maven, tuttavia fai attenzione a non rischiare di ignorare il codice che si trova nei pacchetti che contengono una cartella "target" nel loro percorso. (In un progetto con le seguenti classi: src/main/java/org/example/game/archery/bow/LongBow.java e src/main/java/org/example/game/archery/target/Target.java, non troveresti nulla da colpire con il tuo LongBow con tale configurazione .gitignore :-))
Cristiano Costantini

4

Come già sottolineato nei commenti di Abhijeet puoi semplicemente aggiungere una riga come:

/target/**

per escludere il file nella \.git\info\cartella.

Quindi, se vuoi sbarazzarti di quella targetcartella nel tuo repository remoto, dovrai prima eliminare manualmente questa cartella dal tuo repository locale, eseguire il commit e quindi inviarlo. Questo perché git ti mostrerà il contenuto di una cartella di destinazione come modificato all'inizio.


2

Ignoro tutte le classi che risiedono nella cartella di destinazione da git. aggiungi la seguente riga nel file .gitignore aperto:

/ .class

O

*/bersaglio/**

Funziona perfettamente per me. Provalo.


0

aggiungi le seguenti righe in gitignore, da tutti i file indesiderati

/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/
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.