Reset一词是指撤销修改。git reset 命令被用来重置更改。git reset 命令有三种核心调用形式。这些形式如下。
Soft
Mixed
Hard
如果我们从Git的角度来说,那么Git是一个将HEAD的当前状态重置为指定状态的工具。它是一个复杂的、多功能的撤销修改的工具。它充当了 Git 的时间机器。你可以在各种提交之间来回跳跃。每种重置变化都会影响到git用来处理你的文件内容的特定树。
此外,git reset 可以在整个提交对象或单个文件层面上操作。每种重置方式都会影响到git用来处理你的文件和其内容的特定树。
Git 使用一个索引(暂存区)、HEAD 和工作目录来创建和恢复提交。如果你不知道什么是头、树、索引,那么请访问这里的 Git 索引和 Git 头。
工作目录可以让你修改文件,你也可以分阶段进入索引。分段区可以让你选择你想放到下一次提交中的内容。一个提交对象是一个加密的哈希版本的内容。它有一些元数据和点,用来切换到之前的提交。
让我们了解一下git reset命令的不同用途。
Git Reset Hard
它将首先移动Head,然后用提交的内容更新索引。这是最直接、最不安全、也是最常用的选项。–硬选项会改变提交历史,Ref指针会更新到指定的提交。然后,暂存索引和工作目录需要重新设置,以匹配指定的提交。任何先前等待提交的暂存索引和工作目录都会被重置为与Commit Tree匹配。这意味着任何等待的工作都会丢失。
让我们通过一个例子来理解 –hard 选项。假设我在现有的版本库中添加了一个新的文件。要添加一个新文件到版本库,运行下面的命令。