从SourceTree或Git恢复已删除的文件

时间:2013-04-22 09:47:09

标签: git atlassian-sourcetree

我最近开始使用SourceTree与Bitbucket合作。我正在研究一个项目,然后我决定将其移动到另一个文件夹(出于各种原因)。所以,我剪切了我在repo中处理的文件,然后单击SourceTree中的删除按钮,没有意识到这样做实际上会删除文件。我为了以防万一而剪切文件,但不记得粘贴这些文件需要原始文件存在。

现在,我只剩下来自repo的文件,SourceTree没有删除..这些是objects目录中的文件,我没有infopack objects目录中的文件夹。

有什么方法可以恢复文件吗?我已经看了this questionthis question,但我是git的新手并且无法弄清楚如何实际执行这些操作。

请帮忙!如何恢复仓库中的文件?

2 个答案:

答案 0 :(得分:4)

如果提交了这些文件,您只需制作git checkout HEAD -f 如果文件未提交,则不会将其存储为对象。

答案 1 :(得分:0)

这是Sourcetree中对我有用的解决方法:

  1. 标识删除文件的提交。

  2. 转到“工具”->“选项”->“自定义操作”。

  3. 创建一个新的自定义操作,如下所示: custom action screen

    结帐$ SHA〜1-$ FILE

  4. 转到删除文件的提交(在步骤1中找到),点击文件并选择自定义操作->您刚刚定义的自定义操作: Restoring the file

  5. 很遗憾,Sourcetree显示错误,并且无法完成任务。 Error in Sourcetree GUI

  6. 我始终启用了“显示完整输出”选项,因此我必须手动关闭窗口,当您需要创建合并请求时,该功能非常有用(链接将在此处复制,否则,该窗口会自动关闭,您将错过所做的更改以将其复制)。如果您看不到该窗口,则可能是因为禁用了该功能(这是默认设置)

  7. 从窗口复制命令。

  8. 打开git终端(从sourcetree右上方) Git terminal launcher on Sourcetree

  9. 粘贴命令(Shift +插入),然后按Enter。 Git Console

  10. Voilá!您的文件已还原。

在最后一个图像中,您可以看到(失败)尝试从提交中还原的操作,该文件已被删除,但是实际上您需要从上一次提交中还原,这就是前两次尝试失败而后来又成功的原因(这就是~1位于SHA末尾的原因。

希望它能帮助您,编写愉快的代码。