记一次 Git 移除某个不该提交的文件

方法一：用 git rebase -i 修改提交

rebase 到之前提交

Copy
$ git rebase -i HEAD~15 // rebase到往前15条提交的位置
$ git rebase -i <58361c2...> // rebase 到某次特定提交
$ git rebase -i --root // 修改根提交（第一次提交）

编辑器中会列出：

Copy
pick abc1234 Initial commit
pick def5678 Add something else
...

把你想修改的第一个提交改为：

Copy
edit abc1234 Initial commit

从该提交中移除你不该提交的文件：

Copy
git reset HEAD secret.txt
git restore --staged secret.txt
git commit --amend
git rebase --continue

修改 commit

Copy
git commit --amend

强制推送

Copy
git push --force

方法二（替代）：git filter-repo 彻底清除文件历史（适合处理多个提交中都出现的文件）

git filter-repo 的下载不讲了。

如果该文件不仅出现在第一次提交中，而且后续提交中也修改过，建议使用以下一种：

Copy
git filter-repo --path secret.txt --invert-paths

python -m git_filter_repo --path secret.txt --invert-paths --force