Git - Reset命令

Git - Reset命令 首页 / Git入门教程 / Git - Reset命令

重置(Reset)一词代表撤消更改。 git reset命令用于重置更改。 git reset命令具有三种核心调用形式。这些形式如下。

  • Soft
  • Mixed
  • Hard

如果我们说的是Git,那么Git是将HEAD的当前状态重置为指定状态的工具。您可以在各种提交之间来回切换。这些重置变体中的每一个都会影响git用于在其内容中处理文件的特定树。

另外,git reset可以对整个提交对象或单个文件级别进行操作。这些重置变量中的每一个都会影响git用于处理文件及其内容的特定树。

Git Reset

Git使用索引(临时区域),HEAD和工作目录来创建和还原提交。

工作目录使您可以更改文件,并且可以进入索引。暂存区域使您可以选择要在下一次提交中放入的内容。提交对象是内容的加密哈希版本。它具有一些用于打开先前提交的元数据和点。

让我们了解git reset命令的不同用法。

Git Reset Hard

它将首先移动Head并使用提交的内容更新索引。这是最直接,最不安全且最常用的选项。 --hard选项更改提交历史记录,并且将引用指针更新为指定的提交。然后,需要重置暂存索引和工作目录以匹配指定提交的索引和工作目录。之前暂存的对暂存索引的提交和工作目录都将重置为匹配提交树。这意味着任何等待的工作都将丢失。

让我们通过示例来了解--hard选项。假设我已将一个新文件添加到现有存储库中。要将新文件添加到存储库,请运行以下命令:

$ git add <file name>

要检查存储库的状态,请运行以下命令:

$ git status

要检查Head和先前提交的状态,请运行以下命令:

$ git log

考虑下图:

Git Reset

在上面的输出中,我添加了一个名为 newfile2.txt 的文件。我已经检查了存储库的状态。我们可以看到当前的头部位置尚未更改,因为我尚未提交更改。现在,我将执行reset--hard 选项。 git reset hard命令将执行为:

$ git reset --hard

考虑以下输出:

Git Reset

如您在上面的输出中看到的,-hard选项在可用存储库上操作。此选项将重置更改并匹配上一次更改之前的Head位置。它将从登台区域中删除可用的更改。 考虑以下输出:

Git Reset

上面的输出显示硬重置后存储库的状态。我们可以看到我的存储库中没有要提交的内容,因为通过reset hard选项删除的所有更改都将其与当前Head的状态匹配。因此,文件 newfile2.txt 已从存储库中删除。

git stash 的帮助下,有一种更安全的方式来重置更改。

通常,硬重置模式执行以下操作:

链接:https://www.learnfk.comhttps://www.learnfk.com/git/git-reset.html

来源:LearnFk无涯教程网

  • 它将移动HEAD指针。
  • 它将用HEAD指向的内容更新暂存区。
  • 它将更新工作目录以匹配暂存区。

Git Reset Mixed

Mixed选项是git reset命令的默认选项。如果我们不传递任何参数,则将git reset命令视为-mixed 作为默认选项。混合选项将更新ref指针。staging区还重置为指定提交的状态。撤消的更改已传输到工作目录。让我们通过一个例子来理解它。

让我们创建一个新文件,例如newfile2.txt。检查存储库的状态。要检查存储库的状态,请运行以下命令:

$ git status

它将显示暂存区域中未跟踪的文件。将其添加到索引。要将文件添加到阶段索引中,请运行git add命令,如下所示:

$ git add <filename>

上面的命令会将文件添加到暂存索引。考虑以下输出:

Git Reset

在上面的输出中,我已经在本地存储库中添加了 newfile2.txt 。现在,我们将在此存储库上执行reset mixed命令。它将作为:

$ git reset --mixed

或者我们只能使用git reset命令代替此命令。

$ git reset

上面的命令将重置Head的状态,并且不会从暂存区域删除任何与Head的位置匹配的数据。 考虑以下输出:

Git Reset

从上面的输出中,我们可以看到通过执行git reset -mixed命令已经重置Head的位置。另外,我们已经检查了存储库的状态。如我们所见,此命令尚未更改存储库的状态。因此很明显,混合模式不会清除暂存区域中的任何数据。

通常,重置混合模式执行以下操作:

  • 它将移动HEAD指针
  • 它将用HEAD指向的内容更新暂存区。

它不会像git hard模式那样更新工作目录。它只会重置索引,而不重置工作树,然后生成尚未更新文件的报告。

如果在命令行上指定了-N,那么Git会将这些语句视为要添加的意图。

Git Reset Soft

soft选项完全不接触索引文件或工作树,但与所有选项一样,它会重置Head。当软模式运行时,refs指针将更新,并且重置将在此处停止。它将充当git amend命令。这不是权威命令。有时开发人员认为这是浪费时间。

通常,它用于更改Head的位置。让我们了解一下它将如何改变Head的位置。它将用作:

$ git reset--soft <commit-sha>

上面的命令会将HEAD移动到特定的提交。让我们通过一个例子来理解它。

我已经在文件newfile2.txt中进行了更改并提交。因此,Head的当前位置在最近一次提交时发生了移位。要检查Head的状态,请运行以下命令:

$ git log

考虑以下输出:

Git Reset

从上面的输出中,您可以看到HEAD的当前位置在f1d4b486f2eeefe575194d51ec3a54926ab05ef7 commit上。但是,我想在我的旧提交2c5a8820091654ac5b8beed774fe6061954cfe92上切换它。由于commit-sha编号是sha算法提供的唯一编号。要切换HEAD,请运行以下命令:

$ git reset --soft  2c5a8820091654

上面的命令会将我的HEAD转移到特定的提交。考虑以下输出:

Git Reset

从上面的输出中可以看到,HEAD已通过git reset --soft模式转移到特定的提交。

无涯教程网

Git Reset 提交

有时我们需要重置特定的提交; Git允许我们这样做。我们可以重置为特定的提交。要重置它,可以将git reset命令与reset命令支持的任何选项一起使用。它将采用特定命令的默认行为并重置给定的提交。重置提交的语法如下:

$ git reset <option> <commit-sha>

这些选项可以是

  • --soft
  • --mixed
  • --Hard

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

赵成的运维体系管理课 -〔赵成〕

程序员的数学基础课 -〔黄申〕

深入浅出计算机组成原理 -〔徐文浩〕

微信小程序全栈开发实战 -〔李艺〕

流程型组织15讲 -〔蒋伟良〕

说透数字化转型 -〔付晓岩〕

操作系统实战45讲 -〔彭东〕

结构写作力 -〔李忠秋〕

云原生基础架构实战课 -〔潘野〕

好记忆不如烂笔头。留下您的足迹吧 :)