检查修改
了解了基本概念之后,我们来谈一谈犯错误之后如何撤销的问题。首先,我们要了解如何检查这 3个步骤当中每一个步骤修改了什么,然后才好判断有没有修改成功。检查修改的二级命令都相同,都是 diff,只是参数有所不同。
- 已修改,未暂存(git diff)
- 已暂存,未提交(git diff –cache)
- 已提交,未推送(git diff master origin/master)
撤销修改
- 已修改,未暂存(git diff)(git reset –hard)
- 已暂存,未提交(git diff –cache)(git reset –hard)
- 已提交,未推送(git diff master origin/master)(git reset –hard origin/master)
- 已推送(git reset –hard HEAD^ / git push -f)
已修改,未暂存
# 如果我们只是在编辑器里修改了文件,还没有执行`git add`
git checkout .
# 或者
git reset --hard
已暂存,未提交
# 如果我们已近执行了`git add .`还没有执行`git commit`
git reset
git checkout .
# 或者
git reset --hard
已提交,未推送
# 你的手太快,执行了`git add .`,又执行了`git commit`,这个时候你的代码进入了你的本地仓库,
git reset --hard origin/master
已推送
# 很不辛,你的手实在太快了。你既`git add`又`git commit`还`git push`,这个时候你的代码已近进入的远程仓库
# 不保留提交历史
git reset --hard HEAD^
git push -f
# 或者
# 保留提交历史
git revert < sha >