【Git】回退 commit 版本详解

文章目录

当我们提交的版本出bug后,如果不影响线上的功能,可能先回退到之前的版本,这时候就要用到git reset这个命令,及他各参数的用法:--hard--mixed--soft

  • 假设我们还原某某文件这个版本导致的bug,那我们就要回退到他的上一个版本登录功能大改那里
  • 需要注意的是:使用--hard回退版本后,回退的这一次版本上的代码改动会被清空除。
# 查看最近 3 次的 commit 版本信息,排在最上面的就是最新的版本
# log 查看所有版本消息,-3 表示查看最近 3 次提交的版本,按 Q 键退出信息查看
➜ git:(test) git log -3
# commit:这一个版本的版本编号
# Author:作者
# Date:本次版本提交时的记录时间
commit 758a23df524dff1f11a1e53295ec5ea8d6396f7b
Author: 流星
Date:   Tue Feb 14 11:36:51 2023 +0800

    chore: 还原某某文件

commit 555a38d888d4c3743491ddeb8a4235c4ec3cc49b
Author: 流星
Date:   Tue Feb 14 11:20:15 2023 +0800

    chore: 登录功能大改

commit 6f53d8d8d4d570082e580554b68d36707f50421b
Author: 流星
Date:   Mon Feb 13 16:45:21 2023 +0800

    feat: 完善登录功能

# 根据查看到的版本commit ID,选择回退到相应的版本,这里是回退到:登录功能大改
➜ git:(test) git reset --hard 555a38d888d4c3743491ddeb8a4235c4ec3cc49b
HEAD is now at 555a38d88 chore: 登录功能大改
# 这时候再去查看版本信息,就会发现还原某某文件那个版本已经没有了
➜ git:(test) git log -2
commit 555a38d888d4c3743491ddeb8a4235c4ec3cc49b
Author: 流星
Date:   Tue Feb 14 11:20:15 2023 +0800

    chore: 登录功能大改

commit 6f53d8d8d4d570082e580554b68d36707f50421b
Author: 流星
Date:   Mon Feb 13 16:45:21 2023 +0800

    feat: 完善登录功能

(END)
  • 还有一个常用的用法就是:
# 不撤销 commit,会撤销 add,并删除工作空间改动代码
git reset --hard HEAD 	# 比较常用,用于清除当前改动
# 不撤销 commit,会撤销 add,不删除工作空间改动代码
git reset --mixed HEAD  # 注意用于撤销add
# 不撤销 commit,不撤销 add,不删除工作空间改动代码
git reset --soft HEAD 	# 相当于没啥用

扩展:各参数作用

  • --hard:表示 ①撤销commit ②撤销add ③删除工作空间改动代码
git reset --hard commitID	# commitID 指的是版本号
git reset --hard HEAD~3		# 数字大小代表的是上几个版本
git reset --hard HEAD^^^	# ^号数量代表的是上几个版本
  • --mixed:表示 ①撤销commit ②撤销add ③不删除工作空间改动代码
git reset --mixed commitID	# commitID 指的是版本号
git reset --mixed HEAD~3	# 数字大小代表的是上几个版本
git reset --mixed HEAD^^^	# ^号数量代表的是上几个版本
  • --soft:表示 ①撤销commit ②不撤销add ③不删除工作空间改动代码
git reset --soft commitID	# commitID 指的是版本号
git reset --soft HEAD~3		# 数字大小代表的是上几个版本
git reset --soft HEAD^^^	# ^号数量代表的是上几个版本
  • 补充示例:
# 示例:--mixed
➜ git:(test) git reset --mixed HEAD^
Unstaged changes after reset:
M       packages/pages/src/table/index.vue
➜ git:(test)git status
On branch test
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   packages/pages/src/table/index.vue

no changes added to commit (use "git add" and/or "git commit -a")

# 示例:--soft
➜ git:(test) git reset --soft HEAD~1
➜ git:(test)git status
On branch test
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   packages/pages/src/table/index.vue

  • 指令详解:
git reset -h
usage: git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]
   or: git reset [-q] [<tree-ish>] [--] <pathspec>...
   or: git reset [-q] [--pathspec-from-file [--pathspec-file-nul]] [<tree-ish>]
   or: git reset --patch [<tree-ish>] [--] [<pathspec>...]
		  
    -q, --quiet           be quiet, only report errors	
    --mixed               reset HEAD and index	
    --soft                reset only HEAD	
    --hard                reset HEAD, index and working tree
    --merge               reset HEAD, index and working tree
    --keep                reset HEAD but keep local changes
    --recurse-submodules[=<reset>]
                          control recursive updating of submodules
    -p, --patch           select hunks interactively
    -N, --intent-to-add   record only the fact that removed paths will be added later
    --pathspec-from-file <file>
                          read pathspec from file
    --pathspec-file-nul   with --pathspec-from-file, pathspec elements are separated with NUL character
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一颗不甘坠落的流星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值