GIT:在意外提交并强制删除文件后,您能否恢复文件的最新工作版本?

GIT:在意外提交并强制删除文件后,您能否恢复文件的最新工作版本?,git,github,bitbucket,atlassian-sourcetree,Git,Github,Bitbucket,Atlassian Sourcetree,我将Sourcetree与git一起使用,出于某种原因,它决定将我更改的文件作为删除文件,而不仅仅是更新它们。直到我提交并推送之后,我才发现这个错误。然后我意识到我所有的文件都不见了。我可以恢复这些文件吗 明确地说,我不想恢复到以前提交的文件版本。我想让这些文件保持git删除时的状态,这样我的工作就不会白费。由于您从未提交对git的更改,这对您没有帮助 但是大多数IDE(假设您使用一个)都有自己的更改历史。例如:eclipse每次保护文件时都会创建一个“安全点” 因此,您可以在删除之前从提交中恢

我将Sourcetree与git一起使用,出于某种原因,它决定将我更改的文件作为删除文件,而不仅仅是更新它们。直到我提交并推送之后,我才发现这个错误。然后我意识到我所有的文件都不见了。我可以恢复这些文件吗


明确地说,我不想恢复到以前提交的文件版本。我想让这些文件保持git删除时的状态,这样我的工作就不会白费。

由于您从未提交对git的更改,这对您没有帮助

但是大多数IDE(假设您使用一个)都有自己的更改历史。例如:
eclipse
每次保护文件时都会创建一个“安全点”

因此,您可以在删除之前从提交中恢复文件状态:

git checkout [commit_before_delete] path/to/your/file

然后使用IDE获取最新保存的版本。在
eclipse
中,这将替换为本地历史记录,您将获得标有安全时间戳的可用文件版本列表。

可能重复的@phd,它将从以前的提交中恢复文件,但正如前面提到的,我希望有一种方法可以恢复在意外删除的提交后发生更改的文件。Git本身不会删除您的工作树文件(除了
Git clean
…),但它也不会将它们保存在任何地方。它保存的是暂存文件和提交的文件。未实际提交的暂存文件有时可以通过git fsck--lost-found恢复(它们显示为“悬空blob”,并复制到lost+found目录中,名称为hash id;您必须重新构建名称)。如果内容从未暂存过,你就倒霉了。@torek我开始怀疑Sourcetree GUI在提交或推送时是否运行git clean,因为它肯定会删除文件(我永远不会这样做)。这会有点吓人。。。我得调查一下。