Perintah git yang akan menjadi terdekat dari apa yang Anda cari akan lewat git archive.
Lihat mencadangkan proyek yang menggunakan git : ia akan memasukkan dalam arsip semua file (termasuk submodul jika Anda menggunakan git-archive-allskrip)
Anda kemudian dapat menggunakan arsip itu di mana saja, memberikan Anda hanya file, tanpa .gitdirektori.
git archive --remote=<repository URL> | tar -t
Jika Anda memerlukan folder dan file hanya dari tingkat pertama:
git archive --remote=<repository URL> | tar -t --exclude="*/*"
Untuk daftar hanya folder tingkat pertama dari repo jarak jauh:
git archive --remote=<repository URL> | tar -t --exclude="*/*" | grep "/"
Catatan: itu tidak berfungsi untuk GitHub (tidak didukung)
Jadi, Anda perlu mengkloning (dangkal untuk mempercepat langkah klon), dan kemudian mengarsipkan secara lokal :
git clone --depth=1 git@github.com:xxx/yyy.git
cd yyy
git archive --format=tar aTag -o aTag.tar
Pilihan lain adalah melakukan klon dangkal (seperti yang disebutkan di bawah), tetapi menemukan folder .git di tempat lain.
git --git-dir=/path/to/another/folder.git clone --depth=1 /url/to/repo
Folder repo hanya akan menyertakan file, tanpa .git.
Catatan: git --git-dir adalah opsi perintahgit , bukan git clone.
Perbarui dengan Git 2.14.X / 2.15 (Q4 2017): itu akan memastikan untuk menghindari menambahkan folder kosong .
" git archive", terutama ketika digunakan dengan pathspec, menyimpan direktori kosong dalam hasilnya, meskipun Git sendiri tidak pernah melakukannya.
Ini sudah diperbaiki.
Lihat komit 4318094 (12 Sep 2017) oleh René Scharfe (``) .
Disarankan oleh: Jeff King ( peff) .
(Digabung oleh Junio C Hamano - gitster- dalam komit 62b1cb7 , 25 Sep 2017)
archive: jangan tambahkan direktori kosong ke arsip
Sementara git tidak melacak direktori kosong, git archivebisa diakali untuk memasukkan beberapa ke dalam arsip.
Sementara itu didukung oleh objek database, itu tidak dapat diwakili dalam indeks dan karenanya tidak mungkin terjadi di alam liar.
Karena direktori kosong tidak didukung oleh git, direktori tersebut juga tidak boleh ditulis ke dalam arsip.
Jika direktori kosong benar-benar dibutuhkan, maka itu dapat dilacak dan diarsipkan dengan menempatkan .gitignorefile kosong di dalamnya.