Git Yok Sayar ve Maven hedefleri


117

Git tarafından yönetilen bir dosya yapısındaki belirli bir dizinin tüm örneklerini görmezden gelmenin mümkün olup olmadığını herkes bilir.

Bir maven projesindeki tüm 'hedef' klasörleri bir dizi alt modülle dışlamak istiyorum. Her birini bir üst düzey .gitignore'da açıkça hariç tutabileceğimi biliyorum, ancak alt dizinlerdeki örneği otomatik olarak yoksaymak için ** / target / * gibi bir kalıp belirtebilmeyi gerçekten çok isterim.

Mümkün mü?


Bu işi hangi konfigürasyonla yapıyorsunuz? /.settings/ yalnızca "xxx / .settings / *" i yoksayar, ".settings / *" veya "xxx / yyy / .settings / *" i yoksayar: yok sayma kalıpları yinelemeli olarak uygulanmıyor gibi görünüyor. Ayrıca stackoverflow.com/questions/971465/… konusuna bakın .
VonC

Yanıtlar:


98

Bir .gitignoredosyada desen kullanmak mümkündür . Bkz gitignore adam sayfasını . Kalıp */target/*, target adlı dizini ve altındaki her şeyi göz ardı etmelidir. Veya */target/**hedefin altındaki her şeyi görmezden gelmeyi deneyebilirsiniz .


4
Teşekkürler! Burada başka herkes için, ususal maven & eclipse şüphelilerini atlamak için bir .gitignore içeriği var. target / * / target / .metadata tar.gz .classpath .project * /. settings /
sgargan

3
Bu işi hangi konfigürasyonla yapıyorsunuz? /.settings/ yalnızca "xxx / .settings / *" i yoksayar, ".settings / *" veya "xxx / yyy / .settings / *" i yoksayar: yok sayma kalıpları yinelemeli olarak uygulanmıyor gibi görünüyor. Ayrıca stackoverflow.com/questions/971465/… konusuna bakın .
VonC

6
Çok modüllü projeler için ** / target / kullanmak isteyebilirsiniz , ancak kaynaklardaki meşru "hedef" dizinleri hariç tutmamaya dikkat edin
Bogdan

1
/target/**\.git\info\excludebir kuyuda çalışır .
Abhijeet

Modüllerinden birinde "hedef" alt paketi olan bir java projesi gerçekleştirmeye çalıştım. :(
okutane

222

.gitignoreKök dizininde dosya yok alt dizinlerine uygulanır. Benimki şuna benziyor:

.classpath
.project
.settings/
target/

Bu çok modüllü bir maven projesinde. Tüm alt modüller m2eclipse kullanılarak ayrı tutulma projeleri olarak ithal edilmektedir. Başka dosyam yok .gitignore. Gerçekten, gitignore man sayfasına bakarsanız :

.gitignoreYol ile aynı dizindeki veya herhangi bir üst dizindeki bir dosyadan okunan kalıplar …

Yani bu sizin için çalışmalı.


5
Bu, ' / target / ' seçeneğinden daha iyi bir cevap . Dizinler ağacında bulunduğu her yerde bir dizini dışarıda bırakır. Ancak dosyalar için çalışmaz (bkz. Stackoverflow.com/questions/971465/… )
VonC

3
okumaya devam ederseniz, "Bu desenler .gitignore dosyasının konumuna göre eşleşiyor" yazıyor. Cevabınız yanlış ...
user1387219

Bu yaklaşımı kullanıyorum ve tüm maven derleme klasörlerini yok saymak için "hedef /" kullanıyorum, ancak yollarında "hedef" klasör içeren paketlerde bulunan kodu göz ardı etme riskine dikkat edin. (Aşağıdaki sınıfları olan bir projede: src/main/java/org/example/game/archery/bow/LongBow.java ve src/main/java/org/example/game/archery/target/Target.javaböyle .gitignore konfigürasyonuyla LongBow'unuzla vuracak hiçbir şey bulamazsınız :-))
Cristiano Costantini

4

Abhijeet'in yorumlarında da belirtildiği gibi, aşağıdaki gibi satırlar ekleyebilirsiniz:

/target/**

için dışlamak dosyayı \.git\info\klasöre.

Ardından target, uzak deponuzdaki bu klasörden kurtulmak istiyorsanız, önce bu klasörü yerel deponuzdan manuel olarak silmeniz, kaydetmeniz ve ardından itmeniz gerekir. Bunun nedeni, git size bir hedef klasörün içeriğini ilk başta değiştirilmiş haliyle gösterecektir.


2

Git'ten hedef klasörde bulunan tüm sınıfları yok sayıyorum. açık .gitignore dosyasına aşağıdaki satırı ekleyin:

/ .class

VEYA

*/hedef/**

Benim için mükemmel çalışıyor. dene.


0

gitignore'da istenmeyen tüm dosyalardan aşağıdaki satırları ekleyin

/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/
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.