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

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

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


在这里插入图片描述

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、暂存区和工作目录都回退到上一个提交的状态,所有后续的更改都会丢失。
在这里插入图片描述
看起来是一样,本质上有区别。即使 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💖点点关注,收藏不迷路💖
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐