git回退历史,有以下步骤:
1.已push后回退:
(1) 使用git log
命令,查看分支提交历史,确认需要回退版本的<commit_id>
(2) 使用git reset --hard <commit_id>
命令或者git revert <commit_id>
,进行版本回退(此时本地已回退)
(3) 在git commit
后,再次使用git push origin <分支名> --force
命令,推送至远程分支(此时线上版本已回退)
快捷命令:
git reset --hard HEAD^
注:
HEAD
是指向当前版本的指针,HEAD^
表示上个版本,HEAD^^
表示上上个版本revert
和reset
的区别:
(1) 在实际生产环境中,代码是基于master分支发布到线上的,会有多人进行提交。可能会碰到自己或团队其他成员开发的某个功能在上线之后有Bug,需要及时做代码回滚的操作。
在确认要回滚的版本之后,如果别人没有最新提交,那么就可以直接用reset命令进行版本回退,否则,就可以考虑使用revert命令进行还原修改,不能影响到别人的提交。
(2)reset
命令会把要回退版本之后提交的修改都删除。要从第三次修改回退到第一次修改,那么会删除第二、三次的修改。【注:这里并不是真正的物理删除】
如果发现第二次修改有错误,想要恢复第二次修改,却要保留第三次修改,使用revert
命令,其产生了新的commit_id
。
2.提交到暂存区后(执行
git add
后)回退:
git reset HEAD <file_name>
命令撤销提交到暂存区的内容,再使用git checkout -- <file_name>
命令,来清空工作区的修改
3.工作区(执行
git add
前)回退:
git checkout -- <file_name>
命令,来清空工作区的修改
4.参考链接:
参考文章