- 暂存区:git add之后commit之前存在的区域; 工作区:git commit之后存在的区域;远程仓库:git push之后;
- 作了修改,但还没git add,撤销到上一次提交:git checkout -f -- filename;git checkout -f -- .
- 作了修改,并且已经git add,但还没git commit:
- 先将暂存区的修改撤销:git reset HEAD filename/git reset HEAD;此时修改只存在于工作区,变为了 "unstaged changes";
- 再利用上面的checkout命令从工作区撤销修改
- git add之后,作了修改,想丢弃这次修改:git checkout -f --filename会回到最近一次git add
- 作了修改,并且已经git commit了,想撤销这次的修改:
- git revert commitID. 其实,git revert可以用来撤销任意一次的修改,不一定要是最近一次
- git reset --hard commitID/git reset --hard HEAD(HEAD表示当前版本,几个表示倒数第几个版本,倒数第100个版本可以用HEAD~100);参数--hard:强制将暂存区和工作区都同步到指定的版本
- git reset和git revert的区别是:reset是用来回滚的,将HEAD的指针指向了想要回滚的版本,作为最新的版本,而后面的版本也都没有了;而revert只是用来撤销某一次更改,对之后的更改并没有影响
- 然后再用git push -f提交到远程仓库