在git里面,有一个叫index的区域,你把东西加到那里叫add, 把东西再从哪里撤回来叫reset;已经在里面的我们形容它是staged,还没有加进去的我们形容它是unstaged。

其实index区就是一个纯粹的缓冲区,也叫staging area,是正式提交之前给我们的一个缓冲,还有犹豫的余地。因为一旦正式commit提交了,你所有还没解决的愚蠢的傻事都会公开,即使能覆盖能撤销,但还是掩藏不了历史。

自己做的话无所谓其实,但是如果是团队合作的话,每次commit都是一次公开。 其实形容的话,就相当于老板让你做个项目,你肯定不可能做了一点东西就跑到老板办公室去送一趟文件,应该会先把做好的放在桌子的上那个小文件架上。然后那个文件架就叫index。

参考:Git 基础 - 撤消操作 撤销add

指定文件

$ git reset HEAD file.txt

全部撤销

$ git reset HEAD . 撤销修改

指定文件

$ git checkout -- file.txt

全部撤销

$ git checkout -- . 删除commit

一旦commit,就不能撤销!会永远留在历史里面。 修改commit

一般流程如下: $ git commit -m '首次提交'

$ git add forgotten_file $ git commit --amend 恢复某个文件到以前版本

用git log得知某个版本SHA后,恢复readme.md这个文件

$ git reset <SHA> readme.md

切换到该版本

$ git checkout readme.md

把变动提交

$ git add . && git commit