git - git restore、reset 和 git checkout 之间的区别?
问题描述
为了从暂存区恢复项目,我们使用git reset filename or git reset .
但是 git 在我做之后也会给我一个提示(如下所述)git status
。
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
这也是从暂存区取消暂存文件。
此外,为了恢复更改,还有已知命令
git checkout filename
然而,同样可以使用git restore filename
它们之间的根本区别是什么?以及为什么 git 推动使用 git restore
解决方案
恢复文件的工作树版本以匹配索引版本是git checkout
可以做的许多事情之一(取决于你给它的参数)。
恢复文件的索引版本以匹配HEAD
提交中的版本是可以做的许多事情之一git reset
(取决于你给它的参数)。它与上述用法的不同之处checkout
在于,一个更改索引,另一个更改工作树。(还有其他checkout
操作也会影响索引;这是导致下一点的问题的一部分......)
git restore
是一个相对较新的命令,它将这些功能组合在一起,同时将它们与其他命令所做的不相关的事情“取消组合”。文档推动使用它,因为它是执行它所涵盖的操作的更新、更清晰的方法。操作是等价的;它只是使 git 更可用的新瓷器。
我不知道 github 与使用一个命令或另一个命令有什么关系。如果您认为他们以某种方式restore
压倒了其他人,那么出于上述原因,他们无论如何都是正确的——这是执行这些操作的现代方式。
推荐阅读
- android-studio - How to detect Android Gradle dependencies that have newer versions available?
- c# - C# 获取作为项目的项目引用
- flutter - Validator 将 TextFormField 推到上面
- android - Unity Android 构建:通过 Chromecast 镜像时 Google Play 服务停止
- typescript - 正确的元组返回类型以避免非空/未定义的运算符?
- react-router - 反应路由器多个
- algorithm - 如何找到数据系列的趋势(增长/减少/平稳性)
- c++ - 使用 googletest 时针对 INSTANTIATE_TEST_SUITE_P 的 Visual Studio 2017 警告
- python - 从 datetime.time 中检索 tzname
- python - 无法将大小为 (x,) 的数组重塑为形状 (x,y,z,1)