git 恢复、重置和 git checkout 之间的区别?

Jat*_*tra 3 git github

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

然而,在我这样做之后,git 也会给我一个提示(如下所述)git status

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
Run Code Online (Sandbox Code Playgroud)

这也是从暂存区域取消暂存文件。

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

git checkout filename
Run Code Online (Sandbox Code Playgroud)

然而,使用同样可以实现git restore filename

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

Mar*_*ger 6

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

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

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

我不知道 github 与使用一个命令或另一个命令有什么关系。如果你认为他们在某种程度上压倒restore了其他人,那么出于上述原因,他们无论如何都是对的 - 这是执行这些操作的现代方式。