git --- 回滚 restore, reset, revert

git revert

  • git revert 是用于“反做”某一个版本,以达到撤销该版本的修改的目的
  • 也就是git revert会生成一个新的commit, 而这个commit需要回滚的版本的内容是一样的
  • 如下, 比如版本三的commit有问题, 需要进行版本回退, 则执行 git revert 版本二 这个命令, git会生成版本四, 而版本四的内容和版本二是一样的
    在这里插入图片描述

Example

  • 目前有一个greeting.txt文件, git 记录如图
    在这里插入图片描述
  • 使用revert 恢复到最近一个commit之前的样子(commit 0343dc3)
    在这里插入图片描述
  • 查看git 记录以及greeting.txt的内容
    在这里插入图片描述
  • 注意: 如果要恢复到几个版本以前的状态, 尽量一个一个恢复, 避免冲突
  • 比如要恢复到 fbc9245 之前的状态, 则先revert 020cf2e --> revert 0343dc3 --> reevrt 2d73d74 ----> revert fbc9245

git restore

  • git restore有两种用法
  • 如果文件在工作区, 还没有被add进缓存区, 则git restore会直接丢弃目前工作区的更改
  • 如果文件在缓存区, 则需要使用 git restore --staged 将文件从缓存区移动回工作区

Example

git restore -- staged
  • 现在有一个更改, 已经被加入进缓存区
  • 使用 git restore --staged bar.txt 将文件移出缓存区, 放进工作区

在这里插入图片描述

git restore
  • 使用 git restore 将工作区的代码丢弃, 恢复原状
    在这里插入图片描述

Example: 恢复被删除的文件
在这里插入图片描述

git reset

git reset --soft

  • 仅仅移动当前 Head 指针,不会改变工作区和暂存区的内容
  • 之前commit的内容, 包括新增的文件,会被放进暂存区 (未commit)

Example:

  • 现在工作区 有一个修改, 暂存区有一个修改
    在这里插入图片描述
  • git 记录如下
    在这里插入图片描述
  • 执行 git reset --soft HEAD~1 表示恢复到HEAD指针上一个版本
  • 暂存区和工作区的文件不会被改动, 仅仅是HEAD指针被移动了 而之前的commit (新加10.txt) 全部会被放进缓存区
    在这里插入图片描述
    在这里插入图片描述
  • 注意此时的commit 10不会被丢弃,依然存在
    在这里插入图片描述
  • 如果在工作区或者缓存区的文件就是上次修改的文件,则会合并内容
  • 10.txt 从modified变为 new file,但是内容没有被丢弃
    在这里插入图片描述
    在这里插入图片描述

git reset --mixed

  • 移动当前 Head 指针
  • 之前commit的内容会被放进工作区
  • 目前缓存区的内容也会被放进工作区
  • 新增的文件会变为untracked状态(也就是放进工作区)

Example

  • 下面是mixed reset之前的状态
    在这里插入图片描述
  • 执行 git reset --mixed HEAD~1
  • 原来在缓存区的 1.txt会被放进工作区,而原来的新文件10.txt会被变为untracked状态(放进工作区)
  • 之前的commit内容 新文件 9.txt 也被直接变为untracked状态 (放进工作区)

在这里插入图片描述

git reset – hard

  • 将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交,当前 HEAD 指针、工作区和暂存区内容全部改变
  • 原有文件内容的变更 :修改内容丢失(修改的代码不会变成未add的状态)
  • 目录结构的变更(增加或者删除文件):新增文件丢失、删除的文件相当于没删

Example

  • 下面是hard reset之前的状态
    在这里插入图片描述
  • 执行 git reset --hard HEAD~1 之后,工作区和暂存区全部被清空,回到上一个commit
    在这里插入图片描述
  • 注意, commit 10不会被删除,依然存在
    在这里插入图片描述
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值