git的三级结构

工作区 -> 暂存区 -> 本地仓库 (远程仓库)

git三级结构

暂存Working Directory

使用git stash命令,该命令将当前工作区所有在缓存起来,从而使工作区变“干净”,切换到其他分支工作。具体教程在这里

取消工作区中某文件的更改到之前的某次commit

可以使用git checkout <commit hash> <file>将当前工作区对file的修改回滚到commit hash所对应的提交状态,此命令是危险命令。具体解释见StackOverflow

除此之外,还可以使用git reset命令,该命令有三种形式

  • git reset –mixed 此为默认方式,它回退到某个版本,保留工作区,回退仓库(commit)和暂存区(index)信息。有时add文件错了,使用git reset HEAD <file>就是这种使用情形
  • git reset –soft 回退到某个版本,保留工作区和暂存区信息,只回退了本地仓库
  • git reset -hard 彻底回退到某个版本,本地的源码也会变为上一个版本的内容,所以是一个危险命令