Git 中的重置和恢复
Git 有一些命令可以处理单个文件,但它们很少见。这些命令是 git add
、git rm
、git mv
、git checkout
、git reset
、git restore
,以及它们各自的对立面。
不过,Git 很聪明。它会记住我们从哪里获取了我们已经获取的工作,以便它可以稍后从下一个获取标记再次获取它。这意味着我们可以拥有一个仅包含我们在本地创建的提交的 Git 仓库。如果我们已经从另一个仓库中获取了相同的提交,Git 可以避免再次获取它们。
在本文中,我们将讨论 Git 的两个重要命令:
-
git restore
-
git reset
Git restore
命令
Git restore
命令用于从索引或另一个提交中恢复工作树中的文件。此命令不会更新当前分支。它还可以从另一个提交中恢复索引中的文件。如果我们想使用与当前分支上的提交不同的提交中的代码,这将非常有用。restore
命令有助于丢弃本地分支中未提交的本地更改。
Git restore
可以在三种不同的情况下使用,具体取决于当前情况,我们是否希望恢复工作副本或索引中的工作,或两者兼而有之。
git restore [--worktree] <file>
上面的命令将覆盖我们工作副本中的 <file>
以及索引文件中的内容。或者我们可以说它恢复了我们在工作副本中所做的更改。我们是否指定它并不重要,因为如果我们不另外说,它是建议性的。
git restore --staged <file>
上面的命令将使用本地仓库中的当前 HEAD 覆盖索引文件中的 <file>
。或者我们可以说未提交的更改最近上演的内容。如果我们说它确实等于旧的 git reset HEAD <file>
,那不会错。
git restore --staged --worktree --source HEAD <file>
如上所述,要使用当前 HEAD 覆盖工作副本和索引,我们使用上述命令。这个版本将能够做到这两点:将我们的工作副本恢复到 HEAD 以及从当前本地分支恢复未暂存的最近暂存的工作。
Git 重置
命令
Git reset
是关于更新我们的分支,移动提示以从分支中添加或删除提交。此操作更改提交历史记录。Git reset
用于恢复索引,与 Git restore
重叠。如果文件被更改,无论是通过使用手动编辑还是通过 git add 方法,git reset
都不能很好地处理它。
该文件被复制到新提交,然后在旧提交中标记为已删除。它会发出警告,表明该文件似乎已从工作副本中删除。Git reset 也不能很好地处理重命名。这并不意味着删除文件并添加同名文件,但确实如此。
reset
命令不能用于移动工作副本中的文件。这些文件不仅被复制到不同的提交;它们从工作副本中删除并在目标提交中恢复为新文件。当我们对文件进行了不必要的更改时,没有必要删除该文件。我们可以撤消对文件的所有更改,但它不会撤消文件本身。
git reset
和 git restore
之间的区别
restore
命令帮助我们取消暂存或丢弃未提交的本地更改。它可用于从索引或其他提交恢复工作树中的文件。此命令不会更新我们的分支。从另一个提交中恢复索引中的文件也很有帮助。
Git reset
用于更新当前分支。恢复索引也很有帮助,与 git restore 相交。Git reset
用于重置索引以丢弃工作树中的更改。此命令不会更新我们的分支。它主要与 --soft
选项一起使用,该选项仅重置索引并保持工作树不变。如果我们暂存了不想丢弃的更改,这将很有用。
如果工作目录是干净的(没有要提交的更改),Git reset
将成功完成,而如果工作目录是干净的,则 Git Restore
将失败。两者都会影响 HEAD。然而,Git restore
只会通过暂存区间接影响 HEAD。Git reset
可以直接使用索引和 HEAD。两者都会影响 HEAD。Git restore
只会通过暂存区间接影响索引和 HEAD。
仅当我们还没有推送任何内容时,Git reset
才能用于修改本地仓库。如果我们已经推送到远程服务器,git-reset 将修改暂存区和工作副本,但不会修改仓库。如果我们想撤消本地更改但不想再次重新引入它们,这很有用。
Git restore
是相反的,因为它只能用于修改我们的仓库,而不是暂存区或本地工作副本。它不会影响我们推送的任何提交。
相关文章
如何在 Windows 系统中卸载 git
发布时间:2023/04/09 浏览次数:223 分类:Git
-
在这篇简短的文章中,我们将学习如何卸载 Git,以及如何在从个人计算机的目录中卸载 Git 后删除这些文件。
Git 如何重命名本地分支
发布时间:2023/04/09 浏览次数:64 分类:Git
-
大多数情况下,重命名分支机构是由于上述情况。 因此,在本教程中,我们将学习使用下面提到的技术更改本地 Git 分支的名称。
重命名 Git 存储库中的文件和目录
发布时间:2023/04/09 浏览次数:102 分类:Git
-
在本文中,我们将讨论 git 中的重命名过程。 我们使用 Git Rename 来更改工作目录中文件和文件夹的名称。
在 Git 中取消初始化存储库
发布时间:2023/04/09 浏览次数:187 分类:Git
-
本本文介绍如何通过 Git 命令行取消初始化 Git 存储库。git init 命令开发一个新的空置 Git 存储库。 它还用于重新初始化已经存在的 Git 存储库。
Git 仓库名称该如何命名
发布时间:2023/04/09 浏览次数:208 分类:Git
-
使用 Git 时,选择一个简洁且最新的存储库名称是一项艰巨的任务。本教程介绍了如何以独特的方式命名 Git 存储库。
配置 Git 以忽略文件模式更改
发布时间:2023/04/09 浏览次数:67 分类:Git
-
本文讨论配置 Git 以忽略文件更改 chmod 所需的步骤。 如果您更改 Git 正在跟踪的文件的权限,系统将在该文件中注册更改。
在 Git 中暂存已删除的文件
发布时间:2023/04/09 浏览次数:93 分类:Git
-
本文讨论了在 Git 中暂存已删除文件的必要步骤。我们知道 rm 命令可以删除一个文件,而无需将其从工作目录中移除。 那么,我们如何暂存已删除的文件以进行提交呢?
在 Git 中显示冲突文件
发布时间:2023/04/09 浏览次数:139 分类:Git
-
本文讨论在 Git 中列出冲突文件的最简单和最干净的方法。 我们可以使用 git status 命令,但这很麻烦,尤其是当我们有大量不冲突的文件时。