Git 笔记 - git reset

git reset 命令用于回退版本,可以指定退回某一次提交的版本。

01 前期了解之 HEAD

简单了解下 HEAD :它类似于指针,指向当前所在分支提交至仓库的最新一次的 commit。

用法含义
HEAD = HEAD~0 = HEAD^0表示当前提交
HEAD~ = HEAD~1 = HEAD^表示上 1 次提交
HEAD~~= HEAD~2 = HEAD^^表示上 2 次提交
HEAD{n个~} = HEAD~n = HEAD{n个^}表示上 n 个提交(n >= 0)

02 实际用法之 reset

  • --mixed :默认参数。用于重置暂存区的文件,回到某次的提交,工作区保持不变。
# 使用上一次提交重置暂存区

# 方式 01 - 使用 HEAD
$ git reset --mixed HEAD^  或  git reset HEAD^
# 方式 02 - 使用 commitId
$ git reset --mixed <commitId>git reset <commitId>
  • --soft :用于回退到某个版本,暂存区和工作区都不会被改变。
# 将提交记录回退一次,暂存区和工作区代码不变

# 方式 01 - 使用 HEAD
$ git reset --soft HEAD^
# 方式 02 - 使用 commitId
$ git reset --soft <commitId>
  • --hard :撤销工作区中所有未提交的修改内容,将暂存区与工作区都重置到某个版本。
# 使用最新一次提交重置暂存区和工作区

# 方式 01 - 使用 HEAD
$ git reset --hard HEAD^
# 方式 02 - 使用 commitId
$ git reset --hard <commitId>
  • mixed、soft、hard 对比效果图如下:

03 reset 后如何恢复

执行 reset 命令之后,HEAD 会指向历史的某个 commit ,但后面的 commit 其实依然存在的,只是看不到了。那么问题来了,如何恢复 reset 掉的 commit 呢?答案是:使用 git reflog + git reset,即用 reflog 查到操作记录的 id,再使用 reset 回到该 id!

git log:查看所有提交过的信息,不包括回退的提交;
git reflog: 查看所有分支的所有 git 操作记录,包括回退的提交;

实例如下:

# 回退上一次的提交记录👇
# 01 查看最新的提交记录
$ git log --oneline
--->>
2b2fefa (HEAD -> dev) modify hello
91dd367 modify world
69322b6 init
---<<

# 02 回退到上一个提交
$ git reset --hard HEAD^
--->>
HEAD is now at 91dd367 modify world
---<<

# 03 查看回退后的提交记录,已经回退成功!
$ git log --oneline
--->> 
91dd367 (HEAD -> dev) modify world
69322b6 init
---<<

# 此时想要恢复到回退掉的提交👇
# 01 查看所有的 git 操作记录,找到对应的标识( HEAD@{1} 或 2b2fefa)
$ git reflog   
--->>  
91dd367 (HEAD -> dev) HEAD@{0}: reset: moving to HEAD^
2b2fefa HEAD@{1}: commit: modify hello
69322b6 HEAD@{2}: commit: init
---<<

# 02 回退到之前的操作
$ git reset --hard HEAD@{1}
--->>  
HEAD is now at 2b2fefa modify hello
---<<

# 03 回退(恢复)成功!
$ git log --oneline    
--->>      
2b2fefa (HEAD -> dev) modify hello
91dd367 modify world
69322b6 init
---<<

04 reset 和 revert 的区别

git resetgit revert 都能重置版本,且都需要谨慎使用,但这两个命令有着不同的效果:

命令描述
git reset将 HEAD 指针指到指定提交,历史记录中不会出现放弃的提交记录。
git revert放弃指定提交的修改,以前的历史记录都在。它会生成一次新的提交去反转需要放弃的修改,该提交需要填写 commit 信息。
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值