文章目录
1. 回滚到过去
1. 三种模式
# 1. 回滚命令是 git reset 它有三种模式: mixed、soft、hard
# 2. git reset --mixed HEAD
# 3. git reset --soft HEAD
# 4. git reset --hard HEAD
1. 简述HEAD的作用
- HEAD就是代表指针,将会去指向那个节点。
- 例子(先忽略三种模式的区别)
# 下面是用hard模式来说明HEAD的作用,但是其他模式中 HEAD的用法是一样的
# 返回过去到最后一次提交位置
git reset --hard HEAD
# 返回到倒数第二次版本
git reset --hard HEAD~
# 返回到前几次的某个版本
# n具体的数字,1 2 3 4
# 若n=2,则代表返回到前2次的版本
git reset --hard HEAD~n
# 回到指定id的版本
# id 怎么查 可以使用git log 或者git log --oneline 或者 git reflog
git reset --hard id
2. mixed的作用
- 作用:会将工作目录的修改、暂存区的内容以及由reset所导致的文件差异,都放进工作目录。
- 例子:初始状态有4个节点(即4个版本),每一个节点都是新添加一个文件。
- 先将版本回到添加了b.txt的版本,命令 git reset --mixed HEAD~2
3. soft的作用
- 作用:回退一个版本,不清空暂存区,将未来新版本中的已经提交的内容恢复到暂存区,不影响原来本地的文件。
- 例子:初始状态有4个节点(即4个版本),每一个节点都是新添加一个文件。
- 先将版本回到添加了b.txt的版本,命令 git reset --soft HEAD~2
4. hard的作用
- 作用:回退一个版本,旧版本是什么样子的,就是什么样子的,没有一丝丝的改变,新版本的文件不可能被带到旧版本中。
- 例子:初始状态有4个节点(即4个版本),每一个节点都是新添加一个文件。
- 先将版本回到添加了b.txt的版本,命令 git reset --hard HEAD~2
2. 回到未来
1. 未来命令
# 可以查询之前的日志信息
# 为什么要 使用git reflog,不是还有git log 这些吗?
# 当你回滚到旧版本的时候,无论是git log 还是git log --oneline,只能展示到当前版本的信息。
# 即更加未来的版本信息无法展示
# 因此,必须使用reflog
git reflog
# 回到对应id 的版本,这里用的是hard模式,强行回到跟未来版本一模一样的状态
# 其他模式,大家可以自行测试
git reset --hard [id]
2. 实战
- 回到有4个文件的版本,首先需要知道那个版本的id号码,之后使用 git reset --hard id 命令回到将来。
3. idea操作回滚命令
-
指令位置
-
设置回滚模式,以及回滚到那个版本。
-
点击reset 则回滚成功。