重置(Reset)一词代表撤消更改。 git reset命令用于重置更改。 git reset命令具有三种核心调用形式。这些形式如下。
如果我们说的是Git,那么Git是将HEAD的当前状态重置为指定状态的工具。您可以在各种提交之间来回切换。这些重置变体中的每一个都会影响git用于在其内容中处理文件的特定树。
另外,git reset可以对整个提交对象或单个文件级别进行操作。这些重置变量中的每一个都会影响git用于处理文件及其内容的特定树。
Git使用索引(临时区域),HEAD和工作目录来创建和还原提交。
链接:https://www.learnfk.comhttps://www.learnfk.com/git/git-reset.html
来源:LearnFk无涯教程网
工作目录使您可以更改文件,并且可以进入索引。暂存区域使您可以选择要在下一次提交中放入的内容。提交对象是内容的加密哈希版本。它具有一些用于打开先前提交的元数据和点。
让我们了解git reset命令的不同用法。
它将首先移动Head并使用提交的内容更新索引。这是最直接,最不安全且最常用的选项。 --hard选项更改提交历史记录,并且将引用指针更新为指定的提交。然后,需要重置暂存索引和工作目录以匹配指定提交的索引和工作目录。之前暂存的对暂存索引的提交和工作目录都将重置为匹配提交树。这意味着任何等待的工作都将丢失。
让我们通过示例来了解--hard选项。假设我已将一个新文件添加到现有存储库中。要将新文件添加到存储库,请运行以下命令:
$ git add <file name>
要检查存储库的状态,请运行以下命令:
$ git status
要检查Head和先前提交的状态,请运行以下命令:
$ git log
考虑下图:
在上面的输出中,我添加了一个名为 newfile2.txt 的文件。我已经检查了存储库的状态。我们可以看到当前的头部位置尚未更改,因为我尚未提交更改。现在,我将执行reset--hard 选项。 git reset hard命令将执行为:
$ git reset --hard
考虑以下输出:
如您在上面的输出中看到的,-hard选项在可用存储库上操作。此选项将重置更改并匹配上一次更改之前的Head位置。它将从登台区域中删除可用的更改。 考虑以下输出:
上面的输出显示硬重置后存储库的状态。我们可以看到我的存储库中没有要提交的内容,因为通过reset hard选项删除的所有更改都将其与当前Head的状态匹配。因此,文件 newfile2.txt 已从存储库中删除。
在 git stash 的帮助下,有一种更安全的方式来重置更改。
通常,硬重置模式执行以下操作:
Mixed选项是git reset命令的默认选项。如果我们不传递任何参数,则将git reset命令视为-mixed 作为默认选项。混合选项将更新ref指针。staging区还重置为指定提交的状态。撤消的更改已传输到工作目录。让我们通过一个例子来理解它。
让我们创建一个新文件,例如newfile2.txt。检查存储库的状态。要检查存储库的状态,请运行以下命令:
$ git status
它将显示暂存区域中未跟踪的文件。将其添加到索引。要将文件添加到阶段索引中,请运行git add命令,如下所示:
$ git add <filename>
上面的命令会将文件添加到暂存索引。考虑以下输出:
在上面的输出中,我已经在本地存储库中添加了 newfile2.txt 。现在,我们将在此存储库上执行reset mixed命令。它将作为:
$ git reset --mixed
或者我们只能使用git reset命令代替此命令。
$ git reset
上面的命令将重置Head的状态,并且不会从暂存区域删除任何与Head的位置匹配的数据。 考虑以下输出:
从上面的输出中,我们可以看到通过执行git reset -mixed命令已经重置Head的位置。另外,我们已经检查了存储库的状态。如我们所见,此命令尚未更改存储库的状态。因此很明显,混合模式不会清除暂存区域中的任何数据。
通常,重置混合模式执行以下操作:
它不会像git hard模式那样更新工作目录。它只会重置索引,而不重置工作树,然后生成尚未更新文件的报告。
如果在命令行上指定了-N,那么Git会将这些语句视为要添加的意图。
soft选项完全不接触索引文件或工作树,但与所有选项一样,它会重置Head。当软模式运行时,refs指针将更新,并且重置将在此处停止。它将充当git amend命令。这不是权威命令。有时开发人员认为这是浪费时间。
通常,它用于更改Head的位置。让我们了解一下它将如何改变Head的位置。它将用作:
$ git reset--soft <commit-sha>
上面的命令会将HEAD移动到特定的提交。让我们通过一个例子来理解它。
我已经在文件newfile2.txt中进行了更改并提交。因此,Head的当前位置在最近一次提交时发生了移位。要检查Head的状态,请运行以下命令:
$ git log
考虑以下输出:
从上面的输出中,您可以看到HEAD的当前位置在f1d4b486f2eeefe575194d51ec3a54926ab05ef7 commit上。但是,我想在我的旧提交2c5a8820091654ac5b8beed774fe6061954cfe92上切换它。由于commit-sha编号是sha算法提供的唯一编号。要切换HEAD,请运行以下命令:
$ git reset --soft 2c5a8820091654
上面的命令会将我的HEAD转移到特定的提交。考虑以下输出:
从上面的输出中可以看到,HEAD已通过git reset --soft模式转移到特定的提交。
有时我们需要重置特定的提交; Git允许我们这样做。我们可以重置为特定的提交。要重置它,可以将git reset命令与reset命令支持的任何选项一起使用。它将采用特定命令的默认行为并重置给定的提交。重置提交的语法如下:
$ git reset <option> <commit-sha>
这些选项可以是
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)