git restore、reset 和 git checkout 之间的区别?

时间:2021-02-21 14:17:13

标签: git github

为了从暂存区恢复项目,我们使用 git reset filename or git reset .

然而,在我执行 git status 后,git 也会给我一个提示(如下所述)。

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)

这也是暂存区的 unstages 文件。

此外,为了恢复更改,还有已知命令

git checkout filename

但是同样可以使用 git restore filename

它们之间的根本区别是什么?以及为什么 git 正在推动使用 git restore

1 个答案:

答案 0 :(得分:2)

恢复文件的工作树版本以匹配索引版本是 git checkout 可以做的许多事情之一(取决于您提供的参数)。

恢复文件的索引版本以匹配 HEAD 提交中的版本是 git reset 可以做的许多事情之一(取决于您提供的参数)。与上面的 checkout 用法不同的是,一个改变索引,另一个改变工作树。 (还有其他 checkout 操作也会影响索引;这是导致下一点的问题的一部分......)

git restore 是一个相对较新的命令,它将这些函数组合在一起,同时将它们从其他命令所做的不相关的事情中“取消分组”。文档推动使用它,因为它是执行其涵盖的操作的更新、更清晰的方法。操作是等价的;它只是让 git 更有用的新瓷器。

我不知道 github 与使用一个命令或另一个命令有什么关系。如果您认为他们以某种方式将 restore 推向其他人,那么出于上述原因,他们无论如何都是正确的 - 这是执行这些操作的现代方式。

相关问题