Misalnya, saya ingin mengunduh PCL 3d_rec_framework.
Ini adalah gudang git PCL: https://github.com/PointCloudLibrary/pcl.git
Bagaimana cara mengunduh direktori ini?
https://github.com/PointCloudLibrary/pcl/tree/master/apps
Saya telah mencoba menjalankan tetapi tidak berhasil:
sam@sam:~/code/pcl_standalone$ git clone https://github.com/PointCloudLibrary/pcl/tree/master/apps/3d_rec_framework
Cloning into '3d_rec_framework'...
error: The requested URL returned error: 403 while accessing https://github.com/PointCloudLibrary/pcl/tree/master/apps/3d_rec_framework/info/refs
fatal: HTTP request failed
sam@sam:~/code/pcl_standalone$
Bagaimana cara mengunduhnya?
Omong-omong, saya tidak ingin mengunduh git PCL dan menghapus semua direktori lain yang tidak saya inginkan. Itu sebabnya saya menanyakan pertanyaan ini.
Terima kasih ~
Jawaban dobey tidak lagi berlaku sejak git v1.7. Anda sekarang dapat checkout folder tertentu dari repositori. Instruksi lengkap dapat ditemukan di sini .
Ini memberitahu git direktori mana yang ingin Anda checkout. Maka Anda dapat menarik hanya direktori tersebut
sumber
Pertama, lakukan:
Kemudian:
...Dan terakhir:
Sangat mudah. Git akan menulis ulang repo sehingga hanya sub-dir yang diinginkan yang disertakan. Ini berfungsi bahkan jika sub-dir memiliki beberapa lapisan. Cukup beri nama direktori tujuan nama sub-dir. Kemudian pada perintah "git filter-branch" letakkan path relatif ke sub-dir. Oh, yang
--depth 1
mengatakangit
hanya mendownload atas kepala ( dasarnya menghapus sejarah ).sumber
git clone --filter
dari Git 2.19Opsi ini sebenarnya akan melewatkan mengambil sebagian besar objek yang tidak dibutuhkan dari server:
Server harus dikonfigurasi dengan:
Tidak ada dukungan server pada v2.19.0, tetapi sudah dapat diuji secara lokal.
TODO:
--filter=blob:none
melompati semua gumpalan, tetapi masih mengambil semua objek pohon. Tetapi pada repo yang normal, ini harus kecil dibandingkan dengan file itu sendiri, jadi ini sudah cukup baik. Ditanya di: https://www.spinics.net/lists/git/msg342006.html Devs menjawab a--filter=tree:0
sedang mengerjakan hal itu.Ingat yang
--depth 1
sudah tersirat--single-branch
, lihat juga: /programming/1778088/how-to-clone-a-single-branch-in-gitfile://$(path)
diperlukan untuk mengatasi masalahgit clone
protokol: /programming/47307578/how-to-shallow-clone-a-local-git-repository-with-a-relative-pathFormat
--filter
didokumentasikan padaman git-rev-list
.Ekstensi dibuat untuk protokol jarak jauh Git untuk mendukung fitur ini.
Documents on Git tree:
Lihat juga: /programming/2466735/how-to-checkout-only-one-file-from-git-repository-sparse-checkout
Uji itu
GitHub hulu .
Output dalam Git v2.19.0:
Kesimpulan: semua gumpalan kecuali
d1/a
hilang. Misalnyaf70a17f51b7b30fec48a32e4f19ac15e261fd1a4
, yangd1/b
tidak ada setelah check outd1/
.Perhatikan itu
root/root
danmybranch/mybranch
juga hilang, tetapi--depth 1
menyembunyikannya dari daftar file yang hilang. Jika Anda menghapus--depth 1
, maka mereka muncul di daftar file yang hilang.sumber
Untuk repositori GitHub, Anda dapat mengkloning setiap sub-direktori dari repositori GitHub (dengan referensi apa pun) menggunakan https://github.com/HR/github-clone
sumber