在网上找到一种方法:
在本地把远程的master分支删除,再把reset后的分支内容给push上去
本地仓库 彻底回退到某一个版本
git reset –hard
删除远程的master分支 (注意master前有个:)
git push origin :master
重新创建远程master分支(这跟我们第1次提交本地代码库给远程仓库的命令一样吧)
git push origin 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
也跟着一起消失了。
好像木有,
参考git 如何撤销一次remote的master commit?
这样直接删除远程分支太暴力了,可以参见这篇博客的解决方案http://blog.mtxcxin.cn/blog/git如何回滚远程仓库.html
回退可以吗?
git revert commitid
可以用git revert #sha
这个命令把#sha版本的改动回退并commit
然后再执行git push就行
不用删除远程分支 比较优雅
先把本地的代码回滚到你想要的版本在提交一次