Jawaban:
Lihatlah dulu git help archive
. archive
adalah perintah git yang memungkinkan untuk membuat arsip yang hanya berisi file yang dilacak git. Mungkin apa yang Anda cari. Satu contoh tercantum di akhir halaman manual:
git archive --format=tar --prefix=git-1.4.0/ v1.4.0 | gzip >git-1.4.0.tar.gz
Jawaban paling sederhana: Tambah --exclude-vcs
--exclude-vcs
Ini mengecualikan semua direktori sistem kontrol versi
Secara pribadi saya gunakan
tar -zcvf foo.tar.gz ./FOLDER_NAME --exclude-vcs
jadi yang perlu Anda lakukan adalah menambahkan --exclude-vcs di akhir perintah.
tar --exclude-vcs -zcvf foo.tar.gz ./FOLDER_NAME
Jika Anda ingin arsip menyertakan file yang dilacak oleh git, tetapi bukan repositori git itu sendiri atau file apa pun yang dihasilkan atau tidak dilacak, maka gunakangit archive
.
Jika Anda secara spesifik ingin mengecualikan .git
tetapi memasukkan yang lainnya, di Linux atau FreeBSD atau OSX atau Cygwin, tar memiliki opsi sederhana untuk mengecualikan direktori:
tar -c --exclude .git -f - foo | gzip >foo.tgz
Dengan GNU tar (yaitu di Linux atau Cygwin), Anda dapat mempersingkat ini menjadi tar czf foo.tgz --exclude .git foo
.
Cara POSIX membuat arsip adalah pax
.
pax -w -t -s '!.*/\.git$!!' -s '!.*/\.git/.*!!' foo | gzip >foo.tgz
git
mengkompilasi pada sistem mana pun di mana tar
tidak tersedia? :-)
tar
tidak memiliki --exclude
opsi, seperti OpenBSD (yang diakui menduplikasi s
opsi pax , tapi itu bukan ekstensi sintaks perintah tar yang umum).
Berkat jawaban yang saya dapatkan pada salah satu pertanyaan saya, saya menemukan solusi lain. Jadi demi kelengkapan, berikut adalah solusi yang memanfaatkan find
:
find . -path './.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
Dan jika Anda ingin mengecualikan kemungkinan .git
folder di dalam (sub) + folder:
find . -path '*/.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
Belakangan juga dapat dicapai melalui:
find . -type d -name '.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
Cukup praktis jika Anda dapat menggunakan teknik penyaringan lainnya find
, misalnya tanggal modifikasi, izin, ...
(Sebagai nama file yang sering well-formed diasumsikan, jika tidak, anda perlu menggunakan nol byte sebagai pemisah yang dapat berarti -print0
untuk find
dan --null
untuk tar
jika didukung.)