Git 删除历史提交

git add 的时候,不小心把自己的测试信息也添加进去了,包含一部分帐号信息,然后 commit 了!后来去确认代码,才发现出了事。很奇怪为什么会这样,明明是一个文件一个文件 add 的……怎么会犯这种低级又愚蠢的错误。

这种情况要即时处理:删除错误的提交记录。否则即使再次提交,依旧可以从以前的提交记录中查到信息。

网上查了一圈,发现犯过类似错误的人还有不少,有很多解决方法,最简单粗暴的方法是:删库,再重新建一个同名仓库,然后就没有提交历史了,但是很多情况下不能采用这种方法。

其他方法,也都要确保从错误提交,到修改提交这段时间,没有人从服务拉取器拉取代码,不然后面还要处理冲突。

#步骤

先在本地备份代码,到其他地方。

然后回滚到错误提交的前一次提交:

git reset --hard [commit hash]

这时,本地仓库会回退到错误提交前,根据本地备份的代码,补全正确的修改,然后commit,强行 push 到远程,覆盖错误的提交。

git commit -S -am "something"
git push --force

这种方法丑陋又粗暴,还可能失去很多提交信息,但是简单。在单人开发,git 作为版本管理时,可以使用。