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

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

 次点击
5 分钟阅读

方法一: git rebase -i 修改提交

rebase 到之前提交

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

编辑器中会列出:

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

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

$ edit abc1234 Initial commit

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

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

修改commit

$ git commit --amend

强制推送

$ git push --force

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

git filter-repo 的下载不讲了。

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

$ git filter-repo --path secret.txt --invert-paths
$ python -m git_filter_repo --path secret.txt --invert-paths --force
© 本文著作权归作者所有,未经许可不得转载使用。