Git Ignores dan target Maven

117

Ada yang tahu apakah mungkin mengabaikan semua contoh direktori tertentu dalam struktur file yang dikelola oleh git.

Saya ingin mengecualikan semua folder 'target' dalam proyek maven dengan sejumlah submodul. Saya tahu saya dapat mengecualikan masing-masing secara eksplisit di tingkat atas .gitignore, tetapi saya benar-benar ingin dapat menentukan pola seperti ** / target / * di sana agar otomatis mengabaikan instance di sub direktori?

Apakah ini mungkin?

sgargan
sumber
Dengan konfigurasi apa Anda membuat ini berfungsi? /.settings/ hanya akan mengabaikan 'xxx / .settings / *', bukan '.settings / *' atau 'xxx / yyy / .settings / *': pola pengabaian tampaknya tidak diterapkan secara rekursif. Lihat juga stackoverflow.com/questions/971465/… .
VonC

Jawaban:

98

Dimungkinkan untuk menggunakan pola dalam sebuah .gitignorefile. Lihat halaman manual gitignore . Pola */target/*harus mengabaikan direktori bernama target dan apa pun di bawahnya. Atau Anda mungkin mencoba */target/**mengabaikan semua yang ada di bawah target.

baudtack
sumber
4
Terima kasih! Di sini untuk orang lain, adalah konten untuk .gitignore untuk melewati para tersangka gerhana & gerhana. target / * / target / .metadata tar.gz .classpath .project * /. settings /
sgargan
3
Dengan konfigurasi apa Anda membuat ini berfungsi? /.settings/ hanya akan mengabaikan 'xxx / .settings / *', bukan '.settings / *' atau 'xxx / yyy / .settings / *': pola pengabaian tampaknya tidak diterapkan secara rekursif. Lihat juga stackoverflow.com/questions/971465/… .
VonC
6
Untuk proyek multi-modul Anda mungkin ingin menggunakan ** / target / , tapi hati-hati untuk tidak mengecualikan direktori "target" yang sah dalam sumber
Bogdan
1
/target/**bekerja di \.git\info\excludefile dengan baik.
Abhijeet
Baru saja mencoba melakukan proyek java dengan subpaket "target" di salah satu modulnya. :(
okutane
222

The .gitignorefile dalam direktori root tidak berlaku untuk semua subdirektori. Punyaku terlihat seperti ini:

.classpath
.project
.settings/
target/

Ini ada dalam proyek maven multi-modul. Semua submodul diimpor sebagai proyek gerhana individu menggunakan m2eclipse. Saya tidak punya .gitignorefile lagi . Memang, jika Anda melihat di halaman manual gitignore :

Pola yang dibaca dari .gitignorefile di direktori yang sama dengan jalur, atau di direktori induk mana pun

Jadi ini seharusnya berhasil untuk Anda.

Dominic Mitchell
sumber
5
Itu adalah jawaban yang lebih baik daripada ' / target / '. Itu mengecualikan direktori dimanapun itu berada di pohon direktori. Tetapi itu tidak akan berfungsi untuk file (lihat stackoverflow.com/questions/971465/… )
VonC
3
jika Anda terus membacanya, dikatakan "Pola-pola ini cocok dengan lokasi file .gitignore." Jawaban Anda salah ...
pengguna1387219
Saya menggunakan pendekatan ini dan menggunakan "target /" untuk mengabaikan semua folder build maven, namun berhati-hatilah agar Anda berisiko mengabaikan kode yang terletak di paket yang berisi folder "target" di jalurnya. (Dalam proyek dengan kelas-kelas berikut: src/main/java/org/example/game/archery/bow/LongBow.java dan src/main/java/org/example/game/archery/target/Target.java, Anda tidak akan menemukan apa pun untuk dipukul dengan LongBow Anda dengan konfigurasi .gitignore seperti itu :-))
Cristiano Costantini
4

Seperti yang sudah ditunjukkan dalam komentar oleh Abhijeet Anda bisa menambahkan baris seperti:

/target/**

untuk mengecualikan file di \.git\info\folder.

Kemudian jika Anda ingin membuang targetfolder itu di repo jarak jauh Anda, Anda harus terlebih dahulu menghapus folder ini dari repositori lokal Anda secara manual, komit dan kemudian dorong. Itu karena git akan menampilkan konten folder target seperti yang dimodifikasi pada awalnya.

Tomasz Mularczyk
sumber
2

Saya mengabaikan semua kelas yang berada di folder target dari git. tambahkan baris berikut di file .gitignore terbuka:

/ .class

ATAU

*/target/**

Ini bekerja dengan sempurna untuk saya. Cobalah.

Rajeev Rathor
sumber
0

tambahkan baris berikut di gitignore, dari semua file yang tidak diinginkan

/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/
Gleidosn
sumber