เมื่อเร็วๆ นี้ ฉันกำลังทำโปรเจ็กต์นอกสถานที่ซึ่งเกี่ยวข้องกับการอัปโหลดไฟล์ขนาดใหญ่ ( > 50 MB) เมื่อฉันพยายามผลักดันการเปลี่ยนแปลงไปยังสาขาต้นทางระยะไกล ฉันได้รับข้อความต่อไปนี้:
การลบไฟล์ออกจากที่เก็บในเครื่องของคุณจะไม่ช่วยอะไร เนื่องจากตัวไฟล์เองได้ทิ้งร่องรอยไว้ในประวัติ
มีหลายวิธีในการแก้ไขปัญหา คุณสามารถใช้ Git Large File Storage (git-lfs.github.com) หรือใช้คำสั่งที่แนะนำบนหน้าช่วยเหลือ GitHub (help.github.com/en/github/managing-large-files/removing-files-from- a-repositorys-history)
ฉันใช้ คำสั่ง rebase ซึ่งสามารถใช้เพื่อเขียนประวัติของที่เก็บใหม่ได้ อย่าลืมสำรองข้อมูลของพื้นที่เก็บข้อมูลที่คุณกำลังจะรันคำสั่งในกรณีที่มีสิ่งผิดปกติเกิดขึ้น
- ตรวจสอบประวัติของคุณเพื่อดูว่าไฟล์ใดที่อาจละเมิดขีดจำกัดฮาร์ด 100MB ในกรณีของฉัน มันเป็นไฟล์ mp4 ต่อไปนี้:
git log — name-status — all
2. ค้นหารหัสการคอมมิตแรกที่อยู่ก่อนหน้าคอมมิตที่เพิ่มไฟล์ ในกรณีของฉัน: 7c0a5fae
3. วิ่ง:
git rebase -i <commit id> In my case git rebase -i 7c0a5fae
เปลี่ยน 'เลือก' เป็น 'แก้ไข' สำหรับการกระทำทั้งหมดที่สัมผัสกับไฟล์ที่ไม่เหมาะสมของคุณ
4. สำหรับทุกคอมมิตที่คุณเลือกในขั้นตอนก่อนหน้า git rebase จะสร้างสแน็ปช็อตขึ้นมาใหม่และอนุญาตให้คุณแก้ไขคอมมิตนั้นได้ ทำซ้ำขั้นตอนด้านล่างต่อไปจนกว่าการรีบูตของคุณจะเสร็จสมบูรณ์:
git rm <your file> git commit --amend # this will overwrite the original commit git rebase --continue Note: you might get conflicts as you continue with your rebase, resolve them the usual way.
5. หลังจากลบประวัติไฟล์ทั้งหมดออกจากคุณ > 50MB ในที่สุดคุณก็สามารถผลักดันได้!
6. สำเร็จ!