从历史记录中彻底删除文件
从历史记录中彻底删除文件。
- 使用
git rm --cached --ignore-unmatch <path>
命令删除指定<path>
下的文件。 - 使用
git filter-branch --force --index-filter <command> --prune-empty --tag-name-filter cat -- --all
命令重写分支的历史记录,并传递之前的命令。 - 可选择使用
git push <remote> --force --all
命令将更改强制推送到远程仓库。
[!CAUTION]
这是一个破坏性操作,会重写整个仓库的历史记录。确保你知道自己在做什么。
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch <path>" \
--prune-empty --tag-name-filter cat -- --all
git push <remote> --force --all
# 示例
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch config/apiKeys.json" \
--prune-empty --tag-name-filter cat -- --all
# 从历史记录中彻底删除 `config/apiKeys.json` 文件
git push origin --force --all
# 强制推送更改到远程仓库