首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >git -有日志提交,但缺少.sln文件,因此无法打开项目-如何恢复

git -有日志提交,但缺少.sln文件,因此无法打开项目-如何恢复
EN

Stack Overflow用户
提问于 2019-03-29 23:12:40
回答 1查看 402关注 0票数 2

有没有办法用git还原我的项目文件。

以下是场景..。我在一家分公司工作了几天。这个分支从来没有被推到远程回购,所以它完全是本地的。

最后,我松开了我的.sln解决方案文件,所以我不能再打开项目了,但是在项目目录中,我仍然有.git目录。

如果我发出git日志,我可以看到它在很久以前就列出了提交,因此日志似乎是存在的。

有没有一种方法可以在这些日志中找到文件,或者根据日志中的提交来恢复我的项目?还是有别的办法?

更新

由于@RomainValeri,git checkout <commit-hash>可以工作,但它使头部处于独立状态。虽然这可能不是什么大事,但后来我发现git reset --hard HEAD~1工作得更好,因为我不需要在最后一次提交中保留更改,所以使用--hard会丢弃它们。如果需要保留这些更改,则使用--soft将头重置为上次提交之前的提交,并在最后提交区域中添加更改。

代码语言:javascript
运行
复制
git reset --hard HEAD~1
git reset --hard HEAD~2
git reset --hard HEAD~3
...

上述命令重置头指针1,2,3,.在上次提交之前提交,然后放弃任何更改。使用软而不是硬,如果你不想放弃这些改变,在这种情况下,这些变化将为你进行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-29 23:16:45

是的,这就是git的基本原理:能够在开发的不同点恢复代码基。

基本上,任何提交都是快照。

因此,请放心:如果您看到了一长串日志,那么您不仅仅是在读取静态日志。此输出是根据git中可用的提交在执行时生成的。并且提交包含了一切。每个提交都是代码库的完整副本。

如果你这样做了

代码语言:javascript
运行
复制
git checkout <commitHash>

工作树(包含链接到repo的文件系统的目录)将被更新,以反映给定提交中描述的状态。

您可以使用您已经知道的git log命令找到这些提交散列,因此可以使用它读取提交消息以确定要检查哪个快照、存储/复制其散列(什么是SHA-1散列?)并检查它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55426546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档