1、问题描述:在本地修改完代码后,合并到master分支,然后推送到远程仓库。推送完了后发现本次提交有问题,想将远程库退回到上次提交之前的版本。
2、问题解决思路:首先将本地仓库的版本回退到上次提交之前的版本(但要保留上次提交时修改的代码),然后在强制推送到远程仓库,将远程库的版本也回退。
3、解决问题:
1.查看本地历史推送版本
git log
2.根据版本号回退到上次提交之前的版本
git reset --soft <版本号> 例:git reset --soft ba454ea89b9ae77a7fe0d98579cbe67866651868
注意:
git reset --soft <版本号>:仅仅是当前版本变化了,新写的代码并不会消失。只需要重新提交就行了。
git reset --hard <版本号>:不仅仅是当前版本回退了,项目内容也会回退到上次提交之前的版本(你写的代码已经没了)。
3.将本地仓库当前版本强制推送到远程仓库,实现远程库的回退,选择好你要提交(修改)的分支
git push origin <分支名称> --force 例:git push origin master --force
4、完成
如此之后,远程库就恢复了上次提交之前的版本,本地虽然也回到了上次提交之前的版本,但是修改的代码仍然存在,只是处于为提交的状态,使用git status查看当前仓库状态可以看到。此时再次使用git log命令会发现,上次提交的记录没有了,其实上次提交的记录并没有消失,只是git log命令看不到了,使用git reflog命令就可以看见。