จะแปลงโคลนตื้น Git เป็นโคลนเต็มได้อย่างไร?


214

ติดตามนี้ดังนั้นคำถาม: ถ้าฉันมีโคลนตื้นวิธีการดึงข้อมูลเก่ากระทำทั้งหมดที่จะทำให้มันเป็นโคลนเต็มรูปแบบ?


4
คุณคิดว่าจะทำเครื่องหมายคำตอบของ @ sdram หรือไม่ นั่นคือสิ่งที่ถูกต้อง
IonicăBizău

คำตอบ:


93

แก้ไข: git fetch --unshallowตอนนี้เป็นตัวเลือก (ขอบคุณ Jack O'Connor)

คุณสามารถเรียกใช้git fetch --depth=1000000(สมมติว่าที่เก็บมีการกระทำน้อยกว่าหนึ่งล้าน)


238
ตอนนี้git fetch --unshallowมีอยู่แล้ว (เหมือนในคำตอบของ @ sdram) คำตอบนี้ไม่ใช่คำตอบที่ดีที่สุดอีกต่อไป
Jack O'Connor

1
คำตอบของ @ sdram ไม่ทำงานสำหรับฉัน (git เวอร์ชัน 2.1.1) แต่คำตอบนี้ทำได้
kay - SE ชั่ว

2
ไม่มีคำตอบที่เหมาะกับฉัน คำสั่งทั้งคู่ประสบความสำเร็จในการดึงข้อมูลคอมมิชชันที่หายไปทั้งหมด แต่เมื่อฉันพยายามที่จะส่งคอมมิทใหม่ฉันได้รับข้อผิดพลาดเกี่ยวกับเซิร์ฟเวอร์ที่ไม่รู้เกี่ยวกับการอ้างอิง 'ตื้น'
Tyguy7

3
git fetch --depth=2147483647เป็นความลึกที่ใหญ่ที่สุดที่เป็นไปได้เพื่อจัดเตรียมให้กับคำสั่ง
clacke

5
ฉันใช้git fetch --unshallowแต่ก็ยังไม่แสดงสาขาทั้งหมด
ซิด

674

คำสั่งด้านล่าง(รุ่น git 1.8.3)จะแปลงโคลนตื้นเป็นปกติ

git fetch --unshallow

จากนั้นเพื่อเข้าถึงสาขาทั้งหมดที่จุดเริ่มต้น (ขอบคุณ @Peter ในความคิดเห็น)

git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin

36
สิ่งนี้ไม่ได้ยกเลิกผลข้างเคียง - สาขาเดียว ต้องการทำเช่นนั้นแก้ไข .git / config ดึงข้อมูลและการเปลี่ยนแปลง + = refs / หัว / BRANCHNAME: refs / รีโมท / กำเนิด / BRANCHNAME สามารถดึงข้อมูล + = refs / หัว / *: refs / รีโมท / กำเนิด / *
ปีเตอร์ Cordes

3
สิ่งนี้ไม่ได้สร้างสาขาท้องถิ่นติดตามสาขาระยะไกลดังนั้นคุณยังจำเป็นต้องชำระเงิน -b BRNAME Origin / BRNAME เพื่อรับการตั้งค่านั้น
Peter Cordes

26
ดูstackoverflow.com/questions/17714159/ … : git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"; git fetch origin จากคำตอบควรเป็นเช่นเดียวกับการแก้ไข. git / config ด้วยมือ
Peter Cordes

ใช้งานได้เฉพาะถ้า repo ถูกทำเครื่องหมายเป็นตื้น ฉันจำไม่ได้ว่ามี แต่มีสถานการณ์ที่คุณสามารถจบด้วย repo ที่ไม่สมบูรณ์โดยไม่ต้องทำการโคลนแบบชัดแจ้ง @ svick's stackoverflow.com/a/6802238/260122คือคำตอบที่ใช้ได้ทุกครั้ง
clacke

git fetch --unshallow --update-head-ok origin '+refs/heads/*:refs/heads/*'ทำงานให้ฉัน
gzaripov

19

ฉันจำเป็นต้องซื้อคืน repo ให้มากขึ้น

หลังจากอ่านman git-fetchแล้วฉันพบว่าไม่สามารถระบุการมอบหมายได้ แต่สามารถระบุวันที่:

git fetch --shallow-since=15/11/2012

สำหรับผู้ที่ต้องการความลึกที่เพิ่มขึ้นmanอ้างอีก:

--deepen=<depth>

คล้ายกับ - ความลึกยกเว้นจะระบุจำนวนการกระทำจากขอบเขตตื้น ๆ ปัจจุบันแทนที่จะเป็นจากปลายสุดของประวัติสาขาระยะไกลแต่ละอัน



0

ไม่มีข้อความใดในเคล็ดลับที่ทำขึ้น ฉันพยายามที่จะทำงานกับแท็ก git เริ่มต้นจากโคลนตื้น

ก่อนอื่นฉันลอง

git fetch --update-shallow

ชนิดของการทำงานครึ่งทางผ่าน ยังไม่มีแท็ก!

git fetch --depth=1000000

คำสั่งสุดท้ายนี้ดึงแท็กจริงๆและในที่สุดฉันก็สามารถเรียกใช้งานได้

git checkout -b master-v1.1.0 tags/v1.1.0

และทำได้ด้วย

HTH

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.