Git Filter Repo

Git nâng cao

Amanda Crawford-Adamo

Software and Data Engineer

git filter-repo là gì?

Lệnh Git Filter-Repo

git filter-repo

Công cụ viết lại lịch sử Git nhanh và an toàn.

  • Đổi tên tệp hoặc thư mục
  • Áp dụng đồng thời cho mọi nhánh

Mục đích

  1. Xóa dữ liệu nhạy cảm (vd: mật khẩu, token)
  2. Dọn tệp không cần thiết
  3. Tái cấu trúc repo
  4. Giảm kích thước repo
Git nâng cao

Quy trình Filter-Repo

  1. Cài git filter-repo bằng pip

    pip install git-filter-repo
    
  2. Xóa secrets.txt khỏi mọi commit

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

Các bộ lọc liên quan

--path: chỉ định đường dẫn cần xử lý

--invert-paths: xử lý mọi đường dẫn trừ đường dẫn trong --path

Git nâng cao

Kết quả Filter-Repo

Kết quả đầu ra

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

Hệ quả chính

  • Tất cả nhánh và commit được cập nhật
  • Tất cả hash commit thay đổi
  • Cần force push sau bước này
  • Thành viên nhóm cần clone lại repo
Git nâng cao

Khi nào dùng filter-repo

Trường hợp dùng

  • Xóa dữ liệu nhạy cảm (vd: mật khẩu)
  • Dọn repo phình to
  • Đổi tên/tái tổ chức tệp trên mọi commit

Mẹo

  • Luôn sao lưu repo trước khi dùng filter-repo
  • Phối hợp với cộng tác viên trước khi đẩy lịch sử đã viết lại
Git nâng cao

Ayo berlatih!

Git nâng cao

Preparing Video For Download...