【问题标题】:Restoring Entire Project from .git folder [duplicate]从.git文件夹恢复整个项目[重复]
【发布时间】:2016-12-24 11:30:32
【问题描述】:

我有一个网络项目,我已经做了一段时间了。我使用 GIT 和 SourceTree 来跟踪更改,但愚蠢地没有适当的备份。

我有大约 50 次提交,并且想要清除 slate 并从新的初始状态开始,所以我删除了 .git 文件夹,但是我在 SourceTree 中搞砸了,最终删除了所有项目文件(尽管文件夹仍然存在出于某种原因)。

我仍然有我删除的 .git 文件夹。我的问题是,我可以从这个文件夹中恢复最后一个已知的项目状态吗?我将如何去做?

【问题讨论】:

  • 让我们把事情弄清楚。首先你写“我删除了 .git 文件夹”。然后你写“我仍然有我删除的 .git 文件夹”。你能解释一下到底发生了什么吗?你能解决你的问题吗?现在它有很多矛盾。并且无法理解当前状态。
  • 仅供参考,“.git”目录实际上是一个 git repo。不是您使用它跟踪的文件。

标签: git backup restore


【解决方案1】:

假设你有一个这样的文件夹(假设这里有 windows,但没有区别):

c:\myrepo\.git

"myrepo" 为空,否则,只要 .git 文件夹包含完整内容,您就可以这样做

cd c:\myrepo
git reset --hard HEAD

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

注意:建议执行“CD 进入 .git 文件夹并键入 git status”是错误的,应回复为“致命 - 此操作必须在工作树中运行”。

【讨论】:

  • 首先使用“git init”后这对我有用。否则我得到你上面提到的“致命......”错误。
【解决方案2】:

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

【讨论】:

  • 我有 .git 文件夹本身。我从 SourceTree 中删除了整个存储库(在删除 .git 文件夹之后),所以我有隔离的 .git 文件夹但没有其他信息。
  • 我有 .git 文件夹本身。我从 SourceTree 中删除了整个存储库(在删除 .git 文件夹之后),所以我有隔离的 .git 文件夹,但没有其他信息。我尝试将 .git 文件夹添加到原始项目文件夹(现在为空)并从 SourceTree 中的工作副本创建一个新项目,但是我收到错误“git status failed with code 128: fatal: bad object HEAD”跨度>
  • CD 进入.git 文件夹并输入git status。你看到了什么?查看here 了解如何推送到新的仓库。
  • 我在 .git 文件夹中并且 git status 返回“致命 - 此操作必须在工作树中运行”
  • 从 .git 目录恢复旧存储库时,我还遇到了“致命 - 此操作必须在工作树中运行”。原来我只需要git init,然后再做任何resets 或logs。
猜你喜欢
  • 1970-01-01
  • 2018-06-04
  • 2019-07-21
  • 2012-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-23
相关资源
最近更新 更多