Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

撤销

撤销是在本地,回滚是操作远程

  1. 在工作区的代码
git checkout -- a.txt   # 丢弃某个文件,或者  
git checkout -- .       # 丢弃全部

注意:git checkout – . 丢弃全部,也包括:新增的文件会被删除、删除的文件会恢复回来、修改的文件会回去。这几个前提都说的是,回到暂存区之前的样子。对之前保存在暂存区里的代码不会有任何影响。对commit提交到本地分支的代码就更没影响了。当然,如果你之前压根都没有暂存或commit,那就是回到你上次pull下来的样子了。

  1. 代码git add到缓存区,并未commit提交
## 将本地commit的内容撤回,修改的文件内容不会消失
git reset HEAD~
git reset HEAD . 
#或者
git reset HEAD a.txt

这个命令仅改变暂存区,并不改变工作区,这意味着在无任何其他操作的情况下,工作区中的实际文件同该命令运行之前无任何变化

  1. 文件执行了git add操作,但想撤销对其的修改(index内回滚)
# 取消暂存
git reset HEAD fileName
# 撤销修改
git checkout fileName
  1. 修改的文件已被git commit,但想再次修改不再产生新的Commit
# 修改最后一次提交
git add sample.txt
git commit --amend -m"说明"
  1. 已在本地进行了多次git commit操作,现在想撤销到其中某次Commit
git reset [--hard|soft|mixed|merge|keep] [commit|HEAD]

已add,但是没commit

git reset HEAD~

已commit,不改变代码,仅仅只是想取消这个操作

git reset --soft HEAD^  # ^ 一次提交 ^^ 两次提交