git 删除历史commit

1. 删除最后一次提交

操作步骤:

第一步:回滚上一次提交
git reset --hard HEAD^

就很简单,回滚master分支的上一次提交。

第二步:强制提交本地代码
git push origin master -f

由于本地reset 之后本地库落后于远程N个版本,所以需要强制提交。

注意:操作命令不要执行多次,避免回滚过多的commit提交;

提交过程中有可能提交不了,去gitlab上确认下是否此分支为保护分支。

2. 删除指定commit提交

如果只能删除最后一次提交记录,多少还是有点鸡肋。有时候我们需要删除的可能是中间的两条commit 记录。其实玩法大同小异。
首先我们确认需要删除的commit log id 是多少,比如:我们需要删除的是:21a254a2b7 对应的这条log。

然后使用git rebase 命令,命令的意思是可以改写从 21a254a2b7 commit id 开始后的所有提交记录。

git rebase -i 21a254a2b7^

执行完这个命令后,就可以看到 21a254a2b7 后的所有commit 记录了。
默认是使用vim 编辑器打开了commit log list。然后我们就可以针对我们不需要的某些log 进行删除了。把原本的pick 单词修改为drop 就表示该commit log 我们需要删除。如下图

并且图片中还有对应的说明解释。
分支删除完成后,保存该文件并退出vim 编辑器。

最后,使用强制更新的命令:

git push origin master -f


最后删除成功,我们对比下删除前后的log记录。

参考地址:https://www.jianshu.com/p/335e5ac0a823

发布了81 篇原创文章 · 获赞 29 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/breakout_alex/article/details/105200990