# Git 相關工具
# BFG Repo-Cleaner - 刪掉某個檔案並清除這個檔案的歷史紀錄
git 最忌諱把密碼或是 key commit 上去,如果不小心 commit 上去又過了很久才發現,除了要 rm 檔案之外還要連同之前的歷史紀錄通通刪除
查了一下發現純粹的 git command 蠻複雜的,但是有一個 BFG Repo-Cleaner (opens new window) 這個工具可以快速地刪除檔案並清除歷史紀錄
# 安裝
Mac 可以用 brew 安裝
brew install bfg
# 使用
移除檔案下面這條指定,就會移除檔案同時清除記錄
bfg --delete-files YOUR-FILE-WITH-SENSITIVE-DATA
# Protected commits
如果要移除的檔案在最新的 commit 裡面,預設會有一個 protected commits
的狀態
Protected commits
-----------------
These are your protected commits, and so their contents will NOT be altered:
* commit 32ag4767 (protected by 'HEAD') - contains 1 dirty file :
- xxx.json (1.4 KB)
WARNING: The dirty content above may be removed from other commits, but as
the *protected* commits still use it, it will STILL exist in your repository.
要移除這個檔案還要加上 --no-blob-protection
這個參數
bfg --delete-files YOUR-FILE-WITH-SENSITIVE-DATA --no-blob-protection
# Submodules
如果 git 專案是一個 Submodule 的話,因為 .git
是放在 parent module 裡面,所以還要指定 git repository
bfg ../.git/modules/your_submodule --delete-files YOUR-FILE-WITH-SENSITIVE-DATA
參考資料
LikeCoin
贊助商連結
贊助商連結