💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。

  • 推荐:「stormsha的主页」👈,持续学习,不断总结,共同进步,为了踏实,做好当下事儿~
  • 专栏导航
  • Python面试合集系列:Python面试题合集,剑指大厂
  • GO基础学习笔记系列:记录博主学习GO语言的笔记,该笔记专栏尽量写的试用所有入门GO语言的初学者
  • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
  • 运维系列:总结好用的命令,高效开发
  • 算法与数据结构系列:总结数据结构和算法,不同类型针对性训练,提升编程思维

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨


💖The Start💖点点关注,收藏不迷路💖



📒文章目录

  • 1、概述
  • 不使用参数(默认):
  • 使用 `--soft`:
  • 使用 `--mixed`:
  • 使用 `--hard`:
  • 总结



Git系列:git reset HEAD_重置

1、概述

在Git中,git reset 命令是一个多功能命令,它可以用来重置当前工作目录的状态,或者重置当前HEAD指向的位置。HEAD 是一个引用,它指向当前分支的最新提交。使用 git reset HEAD 时,你可以选择不同的选项来改变 HEAD 的指向,但不会影响工作目录。

以下是 git reset HEAD 命令的几种常见用法:

不使用参数(默认):

git reset 默认情况下等同于 git reset --mixed。它将HEAD指向最新的提交,但不会影响工作目录和暂存区(staged changes)。

git reset

使用 --soft:

使用 --soft 选项时,git reset 会将HEAD指向指定的提交,但不会影响工作目录和暂存区。这意味着你可以使用 git commit --amend 来修改最近一次提交的信息。

git reset --soft HEAD~

这将把HEAD回退到上一个提交,但不会影响工作目录。

使用 --mixed:

这是默认行为,它会重置HEAD,并且将暂存区(staged changes)更新为HEAD的状态,但工作目录不会被改变。

git reset --mixed HEAD~

这将把HEAD和暂存区回退到上一个提交,但工作目录中的更改仍然保留。

使用 --hard:

使用 --hard 选项时,git reset 会将HEAD、暂存区以及工作目录都重置到指定的状态。这意味着所有自该提交之后做的更改都将被丢弃。

git reset --hard HEAD~

这将把HEAD、暂存区和工作目录都回退到上一个提交的状态,所有后续的更改都会丢失。

Git系列:git reset HEAD_重置_02


看起来是一样,本质上有区别。即使 HEAD指针指向之前的提交,但是 a3的提交对应的文件快照还git版本中,只不过目前无法直接看到 a3的提交在分支视图中。实际上可以使用 git reflog来查看近期完整的git操作的过程,从中可以找到 a3提交的commit id ,从而可以回到到此版本。

这也说明一旦文件被提交,某个提交时刻的文件状态会永远的被git“记录”。git不会轻易的删除某个文件状态,因为一般删除提交只是删除了指向文件快照的引用,并不是文件数据本身。

总结

使用 git reset 时需要非常小心,特别是使用 --hard 选项,因为它会丢失未提交的更改。在执行 git reset 之前,建议先使用 git stash 保存当前的工作进度,以防万一需要恢复。

此外,HEAD 后面可以跟上具体的提交哈希值,也可以使用 HEAD~ 表示当前HEAD的上一个提交,或者使用相对数(如 HEAD~3 表示上上上一个提交)。

了解 git reset 的不同用法对于维护Git仓库的整洁和控制提交历史非常重要。


❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏、分享下吧,非常感谢!👍 👍 👍

🔥🔥🔥道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙


💖The End💖点点关注,收藏不迷路💖