繁体   English   中英

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

[英]Restore Deleted Files from SourceTree or Git

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

现在,我只有从回购该SourceTree没有删除留下的文件。这些都是在文件objects目录,我没有infopack其内部的文件夹中objects的目录。

有什么办法可以恢复文件吗? 我已经看过这个问题这个问题,但是我是 git 新手,无法弄清楚如何实际执行这些操作。

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

如果提交了这些文件,您只需执行git checkout HEAD -f
如果文件未提交,则它们不会存储为对象。

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

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

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

  3. 创建一个新的自定义操作,如下所示:自定义操作屏幕

    结帐 $SHA~1 -- $FILE

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

  5. 不幸的是,Sourcetree 显示错误并且无法完成工作。 Sourcetree GUI 中的错误

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

  7. 从窗口复制命令。

  8. 在 Sourcetree 上打开一个 git 终端(从 sourcetree 右上角) Git 终端启动器

  9. 粘贴命令(shift + insert)并按回车键。 Git 控制台

  10. 瞧! 您的文件已恢复。

在最后一张图片中,您可以看到(失败)尝试从文件被删除的提交中恢复,但实际上您需要从前一次提交中恢复,这就是前两次尝试失败而后一次成功的原因(这就是~1在 SHA 的末尾)。

希望它有帮助,快乐编码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM