一、git reset
git reset [--soft | --mixed | --hard] [目标版本]
[目标版本]
:
- 使用
git log
获取目标版本的SHA
- 使用
git reflog
获取目标版本的短SHA
HEAD
: 当前版本HEAD^
:上一个版本HEAD^^
:上上一个版本HEAD~数字
: 回退几个版本
--soft
:版本回退,暂存区和工作区不变
--mixed
(默认):版本和暂存区回退,工作区不变
--hard
:版本、暂存区、工作区回退
二、git revert
git revert [目标提交]
创建一个新的提交去撤销目标提交
三、git read-tree
或git restore
git read-tree --reset -u [目标版本]
git 2.23.0
新增git restore
git restore --source=[目标版本] --staged --worktree .
这两个本质是一样的,创建一个新的提交,将目标版本到新版本之间的全部撤销