有什么方法可以使用 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(使用前将#替换为@)