Git reset重置

本文概述

  • Git重设硬
  • Git重置混合
  • Git重置头(Git重置软)
  • Git重置提交
重置一词代表撤消更改。 git reset命令用于重置更改。 git reset命令具有三种核心调用形式。这些形式如下。
  • 柔软的
  • 混合的
如果我们说的是Git, 那么Git是将HEAD的当前状态重置为指定状态的工具。它是用于撤消更改的复杂而通用的工具。它充当Git的时间机器。你可以在各种提交之间来回跳转。这些重置变量中的每一个都会影响git用来处理其内容中的文件的特定树。
另外, git reset可以对整个提交对象或单个文件级别进行操作。这些重置变量中的每一个都会影响git用来处理文件及其内容的特定树。
Git reset重置

文章图片
Git使用索引(临时区域), HEAD和工作目录来创建和还原提交。如果你不知道什么是Head, 树木, 索引, 请在此处访问Git Index和Git Head。
工作目录使你可以更改文件, 并且可以进入索引。暂存区域使你可以选择要放入下一次提交的内容。提交对象是内容的加密哈希版本。它具有一些用于打开先前提交的元数据和点。
让我们了解一下git reset命令的不同用法。
Git重设硬 它将首先移动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的帮助下, 有一种更安全的方式来重置更改。
通常, 硬重置模式执行以下操作:
  • 它将移动HEAD指针。
  • 它将使用HEAD指向的内容更新暂存区。
  • 它将更新工作目录以匹配暂存区。
Git重置混合 混合选项是git reset命令的默认选项。如果我们不传递任何参数, 则将git reset命令视为– mixed作为默认选项。混合选项将更新ref指针。登台区域还重置为指定提交的状态。撤消的更改已传输到工作目录。让我们通过一个例子来理解它。
让我们创建一个新文件, 例如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重置头(Git重置软) soft选项完全不接触索引文件或工作树, 但与所有选项一样, 它会重置Head。当软模式运行时, refs指针将更新, 并且重置将在此处停止。它将充当git amend命令。这不是权威命令。有时, 开发人员认为这是浪费时间。
通常, 它用于更改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 --soft2c5a8820091654

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

文章图片
从上面的输出中可以看到, HEAD已通过git reset – soft模式转移到特定的提交。
Git重置提交 有时我们需要重置特定的提交; Git允许我们这样做。我们可以重置为特定的提交。要重置它, 可以将git reset命令与reset命令支持的任何选项一起使用。它将采用特定命令的默认行为并重置给定的提交。重置提交的语法如下:
$ git reset < option> < commit-sha>

【Git reset重置】这些选项可以是
  • – 柔软的
  • -混合
  • – 硬

    推荐阅读