当Git通过软重置或硬重置删除文件时 - 这些文件在哪里?在混合重置之前有没有办法回到这个状态?
通常,当在操作系统上删除文件时,它会转到垃圾箱。当文件被删除或通过Git删除时,他们似乎进入以太。这些文件在哪里?
我有一堆新文件没有正确添加,我愚蠢地运行混合重置,现在这些文件无处可见。
我顺便使用SourceTree for OS X.
答案 0 :(得分:2)
如果您执行了--mixed
或--soft
重置,那么目录中的文件就不会消失,因为这些类型的重置不会影响您的工作树。重置--hard
后,工作树中的文件将被删除。
答案 1 :(得分:1)
git reset命令用法的一小部分解释:
主要参数是软,硬和混合。这些告诉Git在执行重置时如何处理索引和工作副本。
<强>软强>
- soft 参数告诉Git将HEAD重置为另一个提交,但就是这样。如果您指定 - soft Git将停在此处,其他任何内容都不会更改。这意味着索引和工作副本不会被触及,因此在原始HEAD和您重置的提交之间更改的所有文件似乎都已暂存。
混合(默认)
- mixed 参数(如果你没有指定任何东西,这是默认值)会将HEAD重置为另一个提交,并将重置索引以匹配它,但会停在那里。不会触及工作副本。因此,原始HEAD与您重置的提交之间的所有更改仍在工作副本中,并显示为已修改但未暂存。
<强>硬强>
- hard 参数会破坏所有内容 - 它会将HEAD重置为另一个提交,重置索引以匹配它,并重置工作副本以匹配它。这是更危险的命令,也是你可以造成伤害的地方。这里的数据可能会丢失!
更重要的是,您可以使用 git reflog 在某种程度上恢复丢失的数据。
所以,在你的情况下,数据应该只存在于那里,因为你给了--mixed parameter。
答案 2 :(得分:1)
当通过Git删除或删除文件时,它们似乎进入以太。这些文件在哪里?
当您执行硬重置时,git将unlink(2)
文件。
数据可能仍然存在于文件系统中但没有任何保证。请阅读https://unix.stackexchange.com/questions/10883,其中提到了一些恢复工具,主要用于ext3。
git commit
,stash
和branch
命令通常用于保存工作。还要特别注意reflog
用于查找和重新检索失控的叶子更改,尤其是在reset
之后。