为了从暂存区恢复项目,我们使用 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
答案 0 :(得分:2)
恢复文件的工作树版本以匹配索引版本是 git checkout
可以做的许多事情之一(取决于您提供的参数)。
恢复文件的索引版本以匹配 HEAD
提交中的版本是 git reset
可以做的许多事情之一(取决于您提供的参数)。与上面的 checkout
用法不同的是,一个改变索引,另一个改变工作树。 (还有其他 checkout
操作也会影响索引;这是导致下一点的问题的一部分......)
git restore
是一个相对较新的命令,它将这些函数组合在一起,同时将它们从其他命令所做的不相关的事情中“取消分组”。文档推动使用它,因为它是执行其涵盖的操作的更新、更清晰的方法。操作是等价的;它只是让 git 更有用的新瓷器。
我不知道 github 与使用一个命令或另一个命令有什么关系。如果您认为他们以某种方式将 restore
推向其他人,那么出于上述原因,他们无论如何都是正确的 - 这是执行这些操作的现代方式。