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

2024-04-20

有什么方法可以使用 git 恢复我的项目文件吗?

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

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

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

有没有办法以某种方式在这些日志中查找文件或根据日志中的提交恢复我的项目?或者还有其他办法吗?

UPDATE

感谢@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,在这种情况下,这些更改将为您上演。


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

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

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

如果你这样做

git checkout <commitHash>

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

您可以使用以下命令找到这些提交哈希值git log您已经知道的命令,因此使用它来读取提交消息以确定您要检查的快照,存储/复制其哈希值(什么是 SHA-1 哈希? https://git-scm.com/book/en/v2/Git-Internals-Git-Objects),然后检查一下。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 断言列表时,assertEquals 到底检查什么?

    在我的测试中 我断言我返回的列表是我刚刚创建的列表按字母顺序排列的列表 assertEquals 到底检查什么 它检查列表的顺序还是仅检查其内容 因此 如果我有一个 Fred Bob Anna 列表 那么列表中的 2 个 Anna Bob
  • JavaScript 中 FileReader 的异步/等待问题

    我在 Vue js 项目中使用 FileReader 并且此代码有问题 async uploadDocuments files for let file of files let fileName file name let fileCon
  • 显式调用构造函数

    我知道我们可以调用构造函数的概念Explicitly and Implicitly 我已经测试了这两种情况 通常到目前为止 我的所有目的都通过调用构造函数来实现Implicitly 但我想知道每当我们创建时构造函数都会被隐式调用object
  • Mathematica 中的输入/输出单元标签是由什么生成的以及如何向它们添加自动计时?

    当 Mathematica 计算单元格时 它会为输入单元格和输出单元格提供细胞标签 http reference wolfram com mathematica ref CellLabel htmls In Line and Out Lin
  • 回形针是否需要全部 4 列(_file_name、_content_type 等)?

    我想知道 Paperclip 是否需要数据库中的所有四列 add column users avatar file name string add column users avatar content type string add co
  • 如何更改 VS Code 远程容器中的默认卷挂载?

    如何更改容器中打开的文件夹的默认卷装载 我已经尝试过在我的Dockerfile RUN mkdir root myproject WORKDIR root myproject 以及我的 devcontainer json name My P
  • 当 defer func 评估其参数时

    我正在学习 defer 在 golang 中的行为方式 并想用它来处理函数返回时的错误 代码如下 package main import fmt import errors func main a func a var err error
  • Core Plot 1.0如何实现reloadData方法?

    我昨天问了这个问题 并得到了 Eric Skroch 的大力帮助 然而 在查看了 Core Plot 网站上的所有文档以及一些示例后 我仍然有点困惑 因此 我将发布迄今为止的代码 看看是否有人可以帮助我更多 也许埃里克也能更容易提供帮助 我
  • 如果缺少列值,则替换为 pandas 数据框中的增量值

    输入数据框 max value 16 x max max value data s id G1 G2 G3 G3 G4 df2 pd DataFrame from dict data df2 Out 365 s id 0 G1 1 2 3
  • 流行图片,例如 Google 图片

    有没有任何 jQuery 插件或 CSS 技术可以实现像谷歌图像那样的流行效果 Thanks images padding 30px images img position relative float left height 100px
  • Redux 不就是美化了全局状态吗?

    所以我一周前开始学习 React 我不可避免地遇到了状态问题以及组件应该如何与应用程序的其余部分进行通信 我四处搜寻了一下 Redux 似乎是这个月的热门 我通读了所有文档 我认为这实际上是一个相当革命性的想法 以下是我的想法 人们普遍认为
  • 在 C# webBrowser 控件中调用 Javascript 函数

    我正在使用网页浏览器C 中的控件加载网页 需要调用返回字符串值的 JavaScript 函数 我有一个解决方案可以使用调用脚本方法 我也尝试了很多 但都失败了 你能具体说明什么失败了吗 我的下面的示例由一个带有 Web 浏览器和按钮的表单组
  • 为什么 `List` 有 `forEach` 却没有 `map` 默认方法?

    我研究过在 Java 8 中编写基于流的代码 并注意到一种模式 即我经常有一个列表 但需要通过对每个元素应用简单的映射来将其转换为另一个列表 写完后 stream map collect Collections toList 还有一次我记得
  • 如何使用 FakeItEasy 伪造一个动作<>

    我正在使用 FakeItEasy 库为我的单元测试创 建假货 我有一个ClassUnderTest我想测试该方法MethodToTest Data dataObject 这个方法正在调用我想伪造的接口的方法 public interface
  • css设置speak:none现在相当于aria-hidden =“true”吗?

    我只是想知道我是否应该期望 2015 年 1 月左右的浏览器和辅助技术以相当于设置 aria hidden true 的方式使用spoke none 我想指出一些半不透明的文本应该被忽略 并且想知道我是否可以在一次操作中完成它 只需添加一个
  • WinRT StorageFile DisplayName 奇怪的行为

    在 Windows 8 1 上的 Windows 8 应用程序中 我使用 StorageFile 的 DisplayName 属性来获取 友好 文件名 在大多数情况下 结果是文件的名称without扩展名 但有时结果是文件名with扩展名
  • GAE Golang Gorilla mux - 404 页面未找到

    我在 GAE 中使用 gorilla mux 时遇到一些问题 当我尝试时 我发现 404 页面未找到 未调用 rootHandler 函数 未生成任何痕迹 以下是我的代码的一部分 有什么想法吗 提前考虑 func init r mux Ne
  • 动态改变背景LinearLayout

    如何动态改变LinearLayout的背景 您是否尝试过其中之一 yourLayout setBackgroundColor int color yourLayout setBackgroundDrawable Drawable d you
  • 如何使用 Python 访问 Outlook 收件箱中的子文件夹

    我在 Outlook 中创建了一条规则 将来自特定发件人的所有传入邮件移至收件箱中的子文件夹 Like Inbox Subfolder 我写了一段代码 import win32com client outlook win32com clie
  • git - 有日志提交但缺少 .sln 文件,因此无法打开项目 - 如何恢复

    有什么方法可以使用 git 恢复我的项目文件吗 这是场景 我在一个分支机构工作了几天 该分支从未被推送到远程仓库 所以它完全是本地的 我最终丢失了 sln 解决方案文件 因此我无法再打开该项目 但在项目目录中我仍然有 git 目录 如果我发