撤销
撤销是在本地,回滚是操作远程
- 在工作区的代码
git checkout -- a.txt # 丢弃某个文件,或者
git checkout -- . # 丢弃全部
注意:git checkout – . 丢弃全部,也包括:新增的文件会被删除、删除的文件会恢复回来、修改的文件会回去。这几个前提都说的是,回到暂存区之前的样子。对之前保存在暂存区里的代码不会有任何影响。对commit提交到本地分支的代码就更没影响了。当然,如果你之前压根都没有暂存或commit,那就是回到你上次pull下来的样子了。
- 代码git add到缓存区,并未commit提交
## 将本地commit的内容撤回,修改的文件内容不会消失
git reset HEAD~
git reset HEAD .
#或者
git reset HEAD a.txt
这个命令仅改变暂存区,并不改变工作区,这意味着在无任何其他操作的情况下,工作区中的实际文件同该命令运行之前无任何变化
- 文件执行了git add操作,但想撤销对其的修改(index内回滚)
# 取消暂存
git reset HEAD fileName
# 撤销修改
git checkout fileName
- 修改的文件已被git commit,但想再次修改不再产生新的Commit
# 修改最后一次提交
git add sample.txt
git commit --amend -m"说明"
- 已在本地进行了多次git commit操作,现在想撤销到其中某次Commit
git reset [--hard|soft|mixed|merge|keep] [commit|HEAD]
已add,但是没commit
git reset HEAD~
已commit,不改变代码,仅仅只是想取消这个操作
git reset --soft HEAD^ # ^ 一次提交 ^^ 两次提交