未使用 git add 的时候 – 在工作区

放弃修改某个文件

1
git checkout -- filepathname

放弃所有修改的文件

1
2
git checkout .
git restore .

已经使用 git add 的时候 – 在暂存区

恢复某个文件到工作区

1
git reset HEAD filepathname

恢复所有文件到工作区

git reset HEAD .
git reset

1
注意:这里只是恢复到了工作区,如果想放弃修改的代码还需要执行步骤 1(工作区)中的操作

已经使用 git commit 提交的了代码 – 在版本区 (本地仓库)

全部撤回并回到远程仓库最新的状态(不保存代码修改)

1
2
3
4
# 回退到上一版本
git reset --hard HEAD^
# 指定 commit id 回退
git reset --hard commit_id

拉回工作区并保存修改。只撤销 commit 和 add(保存代码修改)

1
2
3
git reset --mixed HEAD^
# 或者
git reset HEAD^

撤销 commit 但是不撤销 add(保存代码修改)

1
git reset --soft HEAD^

撤销修改并回到远程最新的版本(不保存代码修改)

1
2
git fetch --all
git reset --hard origin/master

已经 git push 到了远程分支

回滚远程分支的最近一次提交

1
2
git revert HEAD
git push origin 分支名

这种方式会在远程生成一个版本号

强制刷新 commit 记录

1
2
3
git reset --hard HEAD^
git reset --hard commit_id
git push origin -f