git删除推送至master上的某次错误提交

假设你有3个commit如下:

commit 3
commit 2
commit 1

其中最后一次提交commit 3是错误的,那么可以执行:

git reset --hard HEAD~1

你会发现,HEAD is now at commit 2。如果你觉得你的有些代码还需要的话可以在这条命令之前先本地保存一下或者重新创建一个临时分支来保存代码。

然后再使用git push --force将本次变更强行推送至服务器。这样在服务器上的最后一次错误提交也彻底消失了。

值得注意的是,这类操作比较比较危险,例如:在你的commit 3之后别人又提交了新的commit 4,那在你强制推送之后,那位仁兄的commit 4也跟着一起消失了。

假如你只是想修改上次提交的代码,做一次更完美的commit,可以这样

(1)git reset commitId,(注:不要带--hard)到上个版本
(2)git stash,暂存修改
(3)git push --force, 强制push,远程的最新的一次commit被删除
(4)git stash pop,释放暂存的修改,开始修改代码
(5)git add . -> git commit -m "massage" -> git push

原创讨论区地址:https://segmentfault.com/q/1010000002898735

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

猜你喜欢

转载自blog.csdn.net/double_lee3/article/details/102855281