Yanıtlar:
Önce bir göz atın git help archive
. archive
yalnı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-vcs
komutun 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, .git
ancak 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
git
herhangi bir sistemde derlemeler var mı tar
? :-)
tar
olmadığı sistemlerde --exclude
derlenir (bu, pax'ın s
seç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 -
find
Değ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ç -print0
için find
ve --null
için tar
destekleniyorsa.)