索引区index
暂存区stage
工作区workspace(local)

git add 将修改添加到stage
git commit 将stage提交为一个commit,且本次stage和本次commit保持一致

撤销修改:
1.只在local修改(没有add操作) git checkout ./ 即可
2.local修改后,add到stage,且没有进一步修改(刚add没有继续修改)
1) git reset HEAD --mix (HEAD --mix可省略),撤销stage的修改(此时checkout 没用,因为stage和local一致)
2) git checkout ./ 撤销local的修改(checkout作用是用stage覆盖local,此时local和commit已经一致)

3.local修改后,add到stage,并进行进一步修改
1) git checkout ./ 撤销local的改动(既进一步的修改内容)
2) git reset HEAD --mix (HEAD --mix可省略),撤销stage的修改(此时checkout 没用,因为stage和local一致)
3) git checkout ./ 撤销local的修改(checkout作用是用stage覆盖local,此时local和commit已经一致)

这三步可以合成一步 git reset HEAD --hard

参考:
Git - 暂存区及撤销修改

首先看一下 Git 的工作流程 checkout 是检出的意思,作用是将某次 commit 的状态检出到工作区,它的过程是先将 HEAD 指向某个分支的最后一次 commit,然后从 commit 恢复 index,最后从 index 恢复工作区。 通常用于切换分支,创建新分支,即HEAD 从一个分支切换到另一个分支,或创建并切换到新分支。 (1)放弃工作区中的全部修改 命令: git checkout . (2)放弃工作区中某个文件的修改
在日常的 git 操作 中, git checkout ——检出,是我们的常用命令。最为常用的两种情形是创建分支和切换分支。 (一)基础——千里之行,始于切糕( checkout ) 先熟悉下常用 操作 ,创建分支和切换分支,也可以称为检出分支。 首先我们新建一个仓库 git Test,然后新建文件a,为什么要用a命名呢,这里是故意为之,后面为大家揭晓分支。呵呵。或许下面的介绍会有些枯燥乏味,因为您已经对这些命令
git commit --amend 撤销 上一次提交 并讲暂存区文件重新提交 git checkout -- <file> 拉取暂存区文件 并将其替换成工作区文件 git reset HEAD -- <file> 拉取最近一次提交到版本库的文件到暂存区 改 操作 不影响工作区 git checkout -- <file> 该命令用于拉... 注意: git chekcout 是让文件回到最近一次该文件 git commit或 git add时的状态。 2.工作区修改了之后,提交到了暂存区(即add),如何 撤销 修改? 这里也分为两种情况: 2.1 对于该文件来说,还没有commit过一次。这时
git reset:通常用于 撤销 当前工作区中的某些 git add/commit 操作 ,可将工作区内容 回退 到历史提交节点。 常用的工作区 回退 命令格式: git reset commit_id。 git checkouout.:用于 回退 本地所有修改而未提交的文件内容。 git checkout .是条有风险的命令,因为它会取消本地工作区的修改(相对于暂存区),用暂存区的所有文件直接覆盖本地文件,达到回...