Yanıtlar:
Önce bir göz atın git help archive. archiveyalnızca git izlenen dosyaları içeren arşivler oluşturmanıza izin veren bir git komutudur. Muhtemelen aradığın şey. Kılavuz sayfasının sonunda listelenen bir örnek:
git archive --format=tar --prefix=git-1.4.0/ v1.4.0 | gzip >git-1.4.0.tar.gz
En basit cevap: Ekle --exclude-vcs. Bu, tüm sürüm kontrol sistemi dizinlerini içermez
Şahsen kullanıyorum
tar --exclude-vcs -zcvf foo.tar.gz ./FOLDER_NAME
tek yapmanız gereken --exclude-vcskomutun sonuna '' eklemektir .
tar --exclude-vcs -zcvf foo.tar.gz ./FOLDER_NAME
Arşivin git tarafından izlenen dosyaları içermesini, ancak git deposunun kendisini veya oluşturulmuş veya izlenmemiş herhangi bir dosyayı içermemesini istiyorsanız, kullanıngit archive .
Özellikle hariç tutmak, .gitancak Linux veya FreeBSD veya OSX veya Cygwin altında her şeyi dahil etmek istiyorsanız , tar bir dizini hariç tutmak için basit bir seçeneğe sahiptir:
tar -c --exclude .git -f - foo | gzip >foo.tgz
GNU katranı ile (yani Linux veya Cygwin altında) bunu kısaltabilirsiniz. tar czf foo.tgz --exclude .git foo .
Arşiv oluşturmanın POSIX yolu pax.
pax -w -t -s '!.*/\.git$!!' -s '!.*/\.git/.*!!' foo | gzip >foo.tgz
githerhangi bir sistemde derlemeler var mı tar? :-)
tarolmadığı sistemlerde --excludederlenir (bu, pax'ın sseçeneğini kuşkusuz çoğaltır , ancak bu ortak bir tar komutu sözdizimi uzantısı değildir).
Sorularımdan birine aldığım bir cevap sayesinde başka bir çözüm buldum. Tamlık uğruna, işte aşağıdakilerden faydalanan bir çözüm find:
find . -path './.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
Ve .git(sub) + klasörün içindeki olası klasörleri hariç tutmak istiyorsanız :
find . -path '*/.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
İkincisi ayrıca şu yollarla da elde edilebilir:
find . -type d -name '.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
findDeğişiklik tarihi, izinler vb. Gibi diğer filtreleme tekniklerinden faydalanabiliyorsanız oldukça kullanışlıdır .
(Sık sık iyi biçimli dosya adları varsayılır gibi, aksi takdirde boş anlamına gelebilir ayırıcı olarak bayt kullanımına ihtiyaç -print0için findve --nulliçin tardestekleniyorsa.)