当Git删除或删除文件的位置时?

时间:2014-07-11 01:21:49

标签: macos git atlassian-sourcetree

当Git通过软重置或硬重置删除文件时 - 这些文件在哪里?在混合重置之前有没有办法回到这个状态?

通常,当在操作系统上删除文件时,它会转到垃圾箱。当文件被删除或通过Git删除时,他们似乎进入以太。这些文件在哪里?

我有一堆新文件没有正确添加,我愚蠢地运行混合重置,现在这些文件无处可见。

我顺便使用SourceTree for OS X.

3 个答案:

答案 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 commitstashbranch命令通常用于保存工作。还要特别注意reflog用于查找和重新检索失控的叶子更改,尤其是在reset之后。