在网上找到一种方法:
在本地把远程的master分支删除,再把reset后的分支内容给push上去
本地仓库 彻底回退到某一个版本
git reset –hard
删除远程的master分支 (注意master前有个:)
git push origin :master
重新创建远程master分支(这跟我们第1次提交本地代码库给远程仓库的命令一样吧)
git push origin master
我的问题是除了这种比较暴力的方法,还有别的方法吗?
在网上找到一种方法:
在本地把远程的master分支删除,再把reset后的分支内容给push上去
本地仓库 彻底回退到某一个版本
git reset –hard
删除远程的master分支 (注意master前有个:)
git push origin :master
重新创建远程master分支(这跟我们第1次提交本地代码库给远程仓库的命令一样吧)
git push origin master
我的问题是除了这种比较暴力的方法,还有别的方法吗?
leftstick的回答挺清晰了,我想再补充一点:假如你只是想修改上次提交的代码,做一次更完美的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
假设你有3个commit如下:
其中最后一次提交
commit 3
是错误的,那么可以执行:你会发现,
HEAD is now at commit 2
。然后再使用
git push --force
将本次变更强行推送至服务器。这样在服务器上的最后一次错误提交也彻底消失了。