使用git的时候经常会出现,“啊!,刚才提交的代码有问题,需要undo一下了” 这种情况,为了应对这种问题。本文介绍 git 的一些 undo 操作
在使用 git 时,可以分为4个工作区域:
- working area: 本机工作区
- staging area:当执行
git add
时候,文件就会到staging area
- local repo: 当执行
git commit
时候,文件就会 从staging area
到local repo
- remote repo: 当执行
git push
的时候,local repo
文件就会同步到remote repo
UNDO:
- working area:当在 working area写了个bug,undo的话就 backspace 就好了
- staging area: 在
git add
的时候,突然发现多add
了个文件,这时候git checkout <file>
就可以了(或者 git reset HEAD )(此操作不会修改working area中的内容) - local repo: 如果想撤回上一次或者几次
commit
怎么办。- git reset HEAD~1 (默认为 --mixed) 。撤销
git commit, git add
操作, 保留 working area的修改。 - git reset --soft HEAD~1。撤销
git commit
操作,保留 working area的修改,git add
操作。 - git reset --hard HEAD~1。撤销
git commit, git add
,working area的修改。 - git reset HEAD~2。撤销两次提交
- git rest --hard commit-id。撤销到指定commit id
- git reset HEAD~1 (默认为 --mixed) 。撤销
- remote repo:当执行
git push
之后发现坏事了,怎么办- git revert commit-id。会删除本次同步的所有内容,并执行
add ,commit
, 需要手动再git push
一下
- git revert commit-id。会删除本次同步的所有内容,并执行