从.git文件夹中还原整个项目

6
我有一个网站项目,已经在上面工作了一段时间。我使用GIT和SourceTree来跟踪变化,但愚蠢地没有进行适当的备份。
我大约有50个提交,想要清除所有内容并从一个新的初始状态开始。于是我删除了.git文件夹,但我在SourceTree中搞砸了,结果删除了所有项目文件(尽管某些原因下文件夹仍然存在)。
我仍然拥有已删除的.git文件夹。我的问题是,我能从这个文件夹中恢复最后已知的项目状态吗?如果可以,该如何操作?

让我们把事情说清楚。首先,你写道“我删除了.git文件夹”。然后你又写道“我仍然有已删除的.git文件夹”。你能解释一下到底发生了什么吗?你能修正一下你的问题吗?现在它有太多矛盾之处,很难理解当前状态。 - Victor Yarema
顺便提一下,".git" 目录实际上是一个 git 仓库,而不是你正在使用它来跟踪的文件。 - Victor Yarema
2个回答

18

假设你有一个像这样的文件夹(这里假设为Windows,但没有任何区别):

c:\myrepo\.git

如果"myrepo"为空,但有一个包含完整内容的.git文件夹,那么你只需要执行以下操作:

git clone --no-checkout url/to/myrepo

cd c:\myrepo
git reset --hard HEAD

这应该可以恢复您的所有文件。

注意:建议执行“CD进入.git文件夹并键入git status”的做法是错误的,这将导致显示“致命-必须在工作树中运行此操作”。


在使用“git init”之后,这对我起作用了。否则,我会得到你上面提到的“致命…”错误。 - Shnugo

0

如果您确实拥有包含.git的文件夹,那么据我所知,您只需要恢复此文件夹,Git就应该将其识别为存储库。如果您还在SourceTree中搞砸了事情,那么您可以删除受影响的分支,甚至创建一个新的存储库,并使用您的.git作为信息来源。


我有.git文件夹本身。我从SourceTree中删除了整个存储库(在删除.git文件夹后),因此我只有孤立的.git文件夹,没有其他信息。 - Mike Emery
你的.git文件夹是否在另一个存储库文件夹内? - Tim Biegeleisen
不,它在项目文件夹中,该文件夹位于C:/标准wamp根目录下。我唯一拥有的存储库根目录就是项目文件夹本身。 - Mike Emery
是的,你说得对....git文件应该就是你所需要的。但是你的Git文件还有一个问题,你需要先解决它,然后再考虑创建一个新的仓库。 - Tim Biegeleisen
1
当我从.git目录中恢复旧的仓库时,我也遇到了“致命错误 - 必须在工作树中运行此操作”的问题。结果证明,在执行任何resetlog之前,我只需要进行git init即可。 - Dominik Stańczak
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接