Git 如何清除已提交的内容
...小于 1 分钟
Git 如何清除已提交的内容
背景
今天搞一个 Node 项目,发现之前误把 env 文件传到了 Git 仓库中,今天发现后想要删除远程的 env 文件,操作了一下,顺便记录下。
1.首先需要现在本地根目录中的.gitignore 文件中添加忽略的文件
2.然后删除本地缓存
git rm --cached "文件名"
3.遍历本地 commit 中的记录,清除与之相关的记录
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch -r 要删除的文件" --prune-empty --tag-name-filter cat -- --all
4.强制推送
提示
这个时候直接提交会失败,因为本地跟跟远程的 commit 记录不一致,需要强制提交
git push origin --all --force
注意
如果另一台电脑,现在拉取最新代码,可能会失败报错 refusing to merge unrelated histories,这个时候可以使用在后边加上--allow-unrelated-histories。
git pull --allow-unrelated-histories