“git重置——硬‘散列’”到底是做什么的?

“git重置——硬‘散列’”到底是做什么的?,git,git-reset,Git,Git Reset,我正在修改关于git的教程,有些事情困扰着我。在关于“撤销内容”的视频中,它说有三种撤销更改的方法,即签出、还原和重置,其中“重置”是最危险的一种,因为一旦git repo被重置为带有-hard标志的前一个提交,就无法返回到程序员重置后的任何提交。但是,当我执行'git reflog'命令时,我能够看到从git跟踪工作区以来我所做的提交中生成的所有哈希ID,教程声称这些哈希ID不应该出现,因为它们已经永久消失了,更让我困惑的是,为什么git允许我签出这些哈希ID我以前的承诺是什么? git re

我正在修改关于git的教程,有些事情困扰着我。在关于“撤销内容”的视频中,它说有三种撤销更改的方法,即签出、还原和重置,其中“重置”是最危险的一种,因为一旦git repo被重置为带有-hard标志的前一个提交,就无法返回到程序员重置后的任何提交。但是,当我执行'git reflog'命令时,我能够看到从git跟踪工作区以来我所做的提交中生成的所有哈希ID,教程声称这些哈希ID不应该出现,因为它们已经永久消失了,更让我困惑的是,为什么git允许我签出这些哈希ID我以前的承诺是什么?

git reset-硬重设工作的本地目录和远程目录,使其处于git历史记录中哈希提交的确切状态。它会清除所有本地更改和任何其他内容,这样您就可以获得原始分支的精确副本。

教程完全错误,或者可能不完整,或者您还没有达到它告诉您为什么之前撒谎的程度:-。reflogs的存在有几个原因,特别是能够撤销git reset的一些效果。

我认为这里的文档可能会重复。一旦提交到git中,您可以通过警告将其恢复。即使它是完全未引用和不可用的,它实际上在很多天内不会被删除。这是一个可配置的超时,具有非常慷慨的默认值。重设-硬重设是危险的,因为它可能会放弃尚未提交的更改,而不是因为它使提交的更改难以访问。更让我困惑的是,为什么git允许我签出我以前所做的任何提交?为什么这令人困惑?git的全部要点就是允许这样做!嗯,不管怎样,其中一点。@William…我说假设教程告诉我的是真的。谢谢你,迈克。那么,它与恢复和签出有什么区别呢?P.S.-我知道你用签出来切换分支,但你也可以签出提交-我想让你考虑一下,当你用一个新的提交回复Runt撤销一个提交时,我已经知道了这一点,而硬重置改变了提交历史。