git archiveคำสั่งคอมไพล์ที่จะใกล้เคียงที่สุดจากสิ่งที่คุณกำลังมองหาจะได้โดยการ
ดูการสำรองข้อมูลโครงการที่ใช้ git : มันจะรวมอยู่ในไฟล์ทั้งหมดที่เก็บถาวร (รวมถึง submodules ถ้าคุณใช้git-archive-allสคริปต์)
จากนั้นคุณสามารถใช้การเก็บถาวรนั้นได้ทุกที่ให้เฉพาะไฟล์และ.gitไดเรกทอรี
git archive --remote=<repository URL> | tar -t
หากคุณต้องการโฟลเดอร์และไฟล์จากระดับแรก:
git archive --remote=<repository URL> | tar -t --exclude="*/*"
ในการแสดงรายการเฉพาะโฟลเดอร์ระดับแรกของ repo ระยะไกล:
git archive --remote=<repository URL> | tar -t --exclude="*/*" | grep "/"
หมายเหตุ: ใช้ไม่ได้กับ GitHub (ไม่รองรับ)
ดังนั้นคุณจะต้องโคลน (ตื้นเพื่อเร่งขั้นตอนการโคลน) และเก็บถาวรในเครื่อง :
git clone --depth=1 git@github.com:xxx/yyy.git
cd yyy
git archive --format=tar aTag -o aTag.tar
ตัวเลือกอื่นจะทำการโคลนแบบตื้น (ดังที่กล่าวไว้ด้านล่าง) แต่ค้นหาโฟลเดอร์. git ที่อื่น
git --git-dir=/path/to/another/folder.git clone --depth=1 /url/to/repo
.gitซื้อคืนภาคโฟลเดอร์จะรวมเฉพาะไฟล์โดยไม่ต้อง
หมายเหตุ: git --git-dir ตัวเลือกในการที่คำสั่งgitgit cloneไม่ได้
ปรับปรุงกับ Git 2.14.X / 2.15 (ไตรมาสที่ 4 ปี 2017): มันจะให้แน่ใจว่าจะหลีกเลี่ยงการเพิ่มโฟลเดอร์ว่าง
" git archive" โดยเฉพาะอย่างยิ่งเมื่อใช้กับพา ธ สเปคเก็บไดเรกทอรีว่างไว้ในผลลัพธ์แม้ว่า Git จะไม่ทำเช่นนั้น
สิ่งนี้ได้รับการแก้ไขแล้ว
ดูกระทำ 4318094 (12 กันยายน 2017) โดยRené Scharfe ( ``)
แนะนำโดย: เจฟฟ์คิง (peff )
(รวมโดยJunio C Hamano - gitster-ในการกระทำ 62b1cb7 , 25 กันยายน 2017)
archive: อย่าเพิ่มไดเรกทอรีว่างลงในไฟล์เก็บถาวร
ในขณะที่คอมไพล์ไม่ได้ติดตามไดเรกทอรีที่ว่างเปล่า แต่git archiveสามารถถูกหลอกให้ใส่บางส่วนลงในที่เก็บถาวร
แม้ว่าฐานข้อมูลของวัตถุจะได้รับการสนับสนุน แต่ก็ไม่สามารถแสดงในดัชนีได้ดังนั้นจึงไม่น่าจะเกิดขึ้นได้
เนื่องจากไดเรกทอรีว่างไม่ได้รับการสนับสนุนโดย git จึงไม่ควรเขียนลงในที่เก็บถาวร
หากจำเป็นต้องมีไดเรกทอรีว่างเปล่าจริงๆมันสามารถติดตามและเก็บถาวรโดยการวาง.gitignoreไฟล์เปล่าไว้ในนั้น