我由于开发中不小心在master分支上开发,忘记了切换分支,最后我直接在master分支上提交,push,在开发分支上merge了master分支。
然后,同事告诉我他的代码要准备上线了,然而我的代码还没测试通过肯定不能一起上线,于是,需要回退了。
平时项目中很少用到回退功能的,一直没有怎么尝试过git reset 和git revert的区别,记忆也不深刻。
这次主要使用git reset。
$ git reset --hard HEAD^ 回退到上个版本 $ git reset --hard commit_id 退到/进到 指定commit_id $ git push --force 强制推送到远程,千万不要拉取,否则又会把最新提交拉下来
git reset --hard在master回退到之前的某个版本之后,后面的提交记录则都消失了,是完全回退到当时提交的模样。而开发分支上之前合并的master分支的内容是不会跟着回退的,还是最新修改好的代码,可以继续在这基础上开发、测试。
git reset其他用法体验:
git reset --mixed
所有提交记录都在,当前head指针指向回退到的提交记录上,后几次提交改变的文件变为本地修改了的文件,
此时提交会提示本地代码比远程的落后,push失败,改为git push --force 强制push, 会提示不允许强制push
解决办法如下:
然后强制push成功:
此时代码已变为第二次提交时的两个文件了:
提交记录也恢复到了前两次提交。
git log可以查看当前存在的两次提交记录,git reflog可以查看所有提交记录:
原文:https://www.cnblogs.com/beileixinqing/p/10837498.html