一、git撤销未add的更改
原理:git checkout -- README.md拉取暂存区or版本库文件,并将其替换成工作区文件
- 撤销工作区已经修改的某一个文件
$ git checkout -- README.md
- 撤销工作区所有修改的文件
$ git checkout .
$ git checkout head .
二、删除已经add但是未commit的文件
- 撤销暂存区已经修改的某一个文件
$ git reset HEAD README.md
- 撤销工作区所有修改的文件
$ git reset HEAD
三、git撤销已经add并且commit的文件(会同步更新工作区的内容)
- 把当前版本回退到上一个commit的版本
$ git reset --hard HEAD^
- 回退到最新commit的版本(前提:当前的命令行窗口没有关闭)
$ git reset --hard 065703
PS:065703是最新的版本号的前几位commitID的哈希值
- 版本穿越(PS:4b70f60是指CommitID版本号)
$ git reset --hard 4b70f60
四、git撤销已经提交到远程仓库的代码(工作区的内容也会更新)
(一)先撤销
- 撤销前一次提交
$ git revert HEAD
- 撤销前前一次提交
$ git revert HEAD^
- 撤回前n+1次提交
$ git revert HEAD~n
- 撤销指定版本提交
$ git revert f3630f3fea265a9576d0325bf376e9022c127871
(二)再push
$ git push
PS:附工作区、暂存区、本地仓库、远程仓库的关系:(结合这四个区理解撤销操作就很容易懂啦~)
实践出真知,各位Good luckヾ( ̄▽ ̄)Bye~Bye~