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

时间:2019-03-29 23:12:40

标签: git

是否可以使用git恢复我的项目文件。

这是场景... 我在分支机构工作了几天。 该分支从未被推送到远程仓库,因此它完全是本地的。

我最终失去了.sln解决方案文件,因此无法再打开项目,但是在项目目录中,我的目录仍然是.git。

如果我发出git log,我可以看到它列出的提交很早,因此日志似乎存在。

是否可以通过某种方式在这些日志中查找文件或基于日志中的提交还原我的项目?还是有其他方法?

更新

由于@RomainValeri,git checkout <commit-hash>可以工作,但是它将HEAD设置为分离状态。虽然那可能没什么大不了的,但是后来我发现git reset --hard HEAD~1的效果更好,因为我不需要在上一次提交中保留更改,因此使用--hard会丢弃它们。如果需要保留这些更改,请改用--soft将HEAD重置为上一次提交之前的提交,并将上一次更改添加到登台区域。

git reset --hard HEAD~1
git reset --hard HEAD~2
git reset --hard HEAD~3
...

以上命令在上次提交之前重置HEAD指针1,2,3,...提交,并在之后放弃所有更改。如果您不想放弃这些更改,请使用--soft而不是--hard,在这种情况下,这些更改将为您准备。

1 个答案:

答案 0 :(得分:1)

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

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

请放心:如果您看到一长串日志,则不仅是在阅读静态日志。此输出是在执行时根据git repo中可用的提交构建的。提交包含所有内容。每次提交都是代码库的完整副本。

如果愿意

git checkout <commitHash>

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

您可以使用已知的git log命令找到这些提交哈希,因此可以使用它来读取提交消息以确定要检查的快照,存储/复制其哈希(what is a SHA-1 hash?) ,然后检查出来。