Git Filter Repo

Git ขั้นสูง

Amanda Crawford-Adamo

Software and Data Engineer

git filter-repo คืออะไร?

คำสั่ง Git Filter-Repo

git filter-repo

เครื่องมือสำหรับเขียน history ของ Git repository ใหม่ได้อย่างรวดเร็วและปลอดภัย

  • เปลี่ยนชื่อไฟล์หรือไดเรกทอรี
  • ทำงานกับทุก branch พร้อมกัน

วัตถุประสงค์

  1. ลบข้อมูลที่ละเอียดอ่อน (เช่น รหัสผ่าน, token)
  2. ลบไฟล์ที่ไม่จำเป็น
  3. ปรับโครงสร้าง repository
  4. ลดขนาด repository
Git ขั้นสูง

ขั้นตอนการใช้ Filter-Repo

  1. ติดตั้ง git filter-repo ด้วย pip

    pip install git-filter-repo
    
  2. ลบ secrets.txt ออกจากทุก commit

    git filter-repo --path secrets.txt --invert-paths
    

Filter ที่เกี่ยวข้องกับ Filter-Repo

--path: ระบุ path ที่ต้องการดำเนินการ

--invert-paths: ดำเนินการกับทุก path ยกเว้นที่ระบุใน --path

Git ขั้นสูง

ผลลัพธ์จาก Filter-Repo

ผลลัพธ์

  Parsed 150 commits
  New history written in 0.10 seconds; now repacking/cleaning...
  Repacking your repo and cleaning out old unneeded objects

ผลที่ตามมาที่สำคัญ

  • ทุก branch และ commit ได้รับการอัปเดต
  • hash ของทุก commit เปลี่ยนแปลง
  • ต้องทำ force push หลังจากขั้นตอนนี้
  • สมาชิกในทีมต้อง clone repository ใหม่อีกครั้ง
Git ขั้นสูง

เมื่อใดควรใช้ filter-repo

กรณีการใช้งาน

  • ลบข้อมูลที่ละเอียดอ่อน (เช่น รหัสผ่าน)
  • ทำความสะอาด repository ที่มีขนาดใหญ่เกินไป
  • เปลี่ยนชื่อหรือจัดระเบียบไฟล์ในทุก commit

เคล็ดลับ

  • สำรอง repository ก่อนใช้ filter-repo ทุกครั้ง
  • ประสานงานกับผู้ร่วมพัฒนาก่อน push history ที่เขียนใหม่
Git ขั้นสูง

มาฝึกกันเถอะ!

Git ขั้นสูง

Preparing Video For Download...