写在前面:本文图片中出现的git st, git co分别是git status和git checkout的简写,使用中可以自行设置
git config --global alias.st status
git config --global alias.co checkout
查看git配置文件 vim ~/.gitconfig
1 工作区内的回滚操作
当工作区的文件发生改动,git status会检测并标红
想要将工作区已变动但未提交到暂存区的文件恢复到变动之前的状态:
语法:git checkout 文件名

此操作会将已经修改的文件变更到未修改时的状态
2 暂存区与工作区之间的操作
将工作区发生变更的文件提交到暂存区:git add .
将暂存区的文件回滚到工作区:语法:git reset HEAD

如上图 暂存区的文件通过git rest HEAD操作回到了工作区
3 版本库与暂存区之间的操作
先用git log查看历史版本号

如上图,红框标记即为git的commit版本号(git commit -m '版本备注')
由版本库回滚某个版本到暂存区:git reset --soft 版本号

如图所示,将指定版本回滚到了暂存区
4 版本库回滚到工作区已修改状态(红色区域)
由版本库回滚某个版本到暂存区:git reset --mix 版本号


如图所示,将指定版本回滚到了工作区(红色区域)
2.5 版本库回滚到工作区未修改状态(白色区域)
由版本库回滚某个版本到暂存区:git reset --hard 版本号

如图所示,将指定版本回滚到了工作区
6 特殊情况
按顺序有三次提交,从旧到新依次是:第一次commit,第二次commit,第三次commit,当我们把第三次commit回滚到了第二次,然后某种原因又要我们重新回到第三次,我们会发现git log 查不到第三次commit的版本号了,这时候我们需要使用git reflog查看以前的历史版本(包括被回滚的版本)


有了版本号,我们就可以回滚到第三次commit了
