Git在版本管理系统中删掉之前提交过的文件

 
Category: Linux-Shell

写在前面

最近逐渐熟悉了 git 的操作, 来总结几条删掉记录的 git 命令.

场景

假如你在添加到暂存区时候使用了

git add .

这时候可能会有一些辅助文件被添加到版本管理中, 并且如果这时候使用了 git commit, 文件的变动就纳入了git的版本库中, 看起来不是很舒服.

那么应该怎么办呢?

首先一条很有用的命令是

git reset --soft HEAD^

可以用来跳到最近的一次提交, 并且不会改变文件实际更改的内容(即工作区的内容), 仅是将commit节点移动到 HEAD的前面一个版本, 如果不加--soft选项, 那么默认是 --mixed, 这时候会丢弃暂存区, 仅保留工作区(或者说: 重置暂存区的文件与上一次提交保持一致, 文件内容保持不变).

执行之后可以看到所有的内容都进入了暂存区, 此时如果有文件需要删除, 直接使用

git rm --cached filename

即可删掉记录, 然后 rm 删除文件即可.

最后强制推送, 就可以覆盖有问题的文件的记录了

git push -f

示例