เมื่อเร็วๆ นี้ ฉันกำลังทำโปรเจ็กต์นอกสถานที่ซึ่งเกี่ยวข้องกับการอัปโหลดไฟล์ขนาดใหญ่ ( > 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 ซึ่งสามารถใช้เพื่อเขียนประวัติของที่เก็บใหม่ได้ อย่าลืมสำรองข้อมูลของพื้นที่เก็บข้อมูลที่คุณกำลังจะรันคำสั่งในกรณีที่มีสิ่งผิดปกติเกิดขึ้น

  1. ตรวจสอบประวัติของคุณเพื่อดูว่าไฟล์ใดที่อาจละเมิดขีดจำกัดฮาร์ด 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. สำเร็จ!