使用 Git 做代碼版本控制時,有時候會不小心把某些敏感的文件提交到 Git 倉庫,可能過後很久才發現。或者是以前提交的文件,現在發現不合適,需要從倉庫中清理。 如果但是刪除文件,然後提交的話,還是可以從倉庫的歷史記錄中找出這個文件,這個問題就比較嚴重了。
所以,如果要徹底從 Git 倉庫中刪除某個文件可以用如下操作:
git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch path_to_file' HEAD
其中 path_to_file 就是你要刪除的文件在項目中的相對路徑,例如:src/main/resource/config.json 。
執行改命令後,git 會遍歷整個倉庫的歷史記錄找出這個文件,清理,然後重新構造 git 的歷史鏈條。
接下來強推就行了 git push -f ,這樣遠程倉庫上也不會再存在這個文件了。