Bir klasörü nasıl zip yaparım ama .git alt klasörünü hariç tutuyorum

148

Bir klasörden bir zip dosyası oluşturmaya çalışıyorum ve .git alt klasörünü sonuçta oluşan zip dosyasından çıkarmak istiyorum.

Sıkıştırmak istediğim dosyanın ana klasörüne gittim ( bitvolution olarak adlandırıldı) ve şunu yapıyorum:

zip -r bitvolution.zip bitvolution -x ".git"

Ancak, .git alt klasörünü hariç tutmuyor.

Çeşitli kombinasyonları denedim, -x .git* , -x \.git/* , -x .git/\* , -x \.git/\* . Ayrıca dışlama argümanı için tam yolu kullanmayı denedim ... ama oraya gitmedim.

    
sordu Tom 28.02.2011 21:38

5 cevap

181

Doğru ifade -x *.git* , yani tam komut şöyle olmalıdır:

zip -r bitvolution.zip bitvolution -x *.git*

İşte 'den bir açıklama:

  

Doğru teşvik

zip -9 -r --exclude=*.svn*  foo.zip [directory-to-compress]
     

Ayrıca, rahatsız edici Mac OS X dizin görüntüleme meta veri dosyalarını hariç tutmak için bir% --exclude=*.DS_Store* ekleyebilirsiniz.

     

İfadenin --exclude 'ya geçirilmiş olduğuna dikkat edin, orijinal dizgenin tümüyle göreceli dizini yolunu kullanarak eşleşmesini sağlayın. Yani .svn/* kendi başına çalışmıyor; ön taraftaki joker karakter, dizin ağacının herhangi bir yerinde .svn dizinine eşleşmesini sağlar.

    
verilen cevap Isaiah 28.02.2011 22:01
84

Git'te depolanan bir projeyi sıkıştırmaya çalışıyorsanız, git archive komutunu kullanın. Kaynak dizinden:

git archive -o bitvolution.zip HEAD

Projeyi belirli bir noktada arşivlemek için HEAD yerine herhangi bir taahhüt veya etiket kimliği kullanabilirsiniz.

Her dosyaya bir önek (ör. üst düzey bir klasör) eklemek isterseniz:

git archive -o bitvolution.zip --prefix=bitvolution/ HEAD

Ayrıca sıkıştırma düzeyini 0 (sıkıştırma yok) ve 9 (maksimum sıkıştırma) dahil olmak üzere, örneğin

olarak da ayarlayabilirsiniz.
git archive -o bitvolution.zip -9 HEAD

Diğer seçenekler için yardım sayfasına bakın ( git help archive ).

    
verilen cevap Blair 14.12.2011 12:08
20

Ters eğik çizgi ekledim:

zip -r bitvolution.zip bitvolution -x \*.git\*

ters eğik çizgi hakkında adam sayfası:

  

Ters eğik çizgi, kabuk dosya adının değiştirilmesini önler, böylece ad   eşleme, tüm dizin düzeylerinde zip ile gerçekleştirilir.

    
verilen cevap Priit Tamboom 14.12.2011 11:13
4

Bunu yaptığınızda makineye gitmiş olduğunuzu varsayarsanız, arşivinizi oluşturmak için git'i de kullanabilirsiniz.

git archive --format=zip HEAD -o bitvolution.zip
    
verilen cevap Tatu Lahtela 14.12.2011 12:12
1

zsh kullanıyorsanız, komut şöyle görünmelidir:

zip -r target_name.zip source_dir -x '/*.git/*'

Kullandıysanız: zip -r target_name.zip source_dir -x /*.git/* . 'regex' olmadan zsh, zip çalıştırmadan önce işlenir. Hata mesajı alacaksınız:

zsh: no matches found: /*.git/*
    
verilen cevap g10guang 08.06.2018 11:35

Etiketlerdeki diğer soruları oku