【发布时间】:2018-03-01 22:34:13
【问题描述】:
假设有人克隆了一个 git 存储库并删除了 .git 文件夹。有没有办法恢复他们正在进行的提交?这不是 Best way to restore .git folder 或 Can deleted .git be restored? 的重复,因为距此事件已过去 年。我现在正在尝试将其恢复到 git 下以将其更新到新版本。但是,那些年可能已经引入了更改,我需要合并/重新定位到新版本。
我目前的想法是:
- 使用
git clone --bare将当前存储库从github克隆到另一个文件夹中 - 使用
git config --local --bool core.bare false将 repo 标记为 non-bare - 将神秘版本中的文件复制到此文件夹中
- 将工作树的差异与当前提交哈希保存在某处
- 将 HEAD 更新为 HEAD^(不确定如何在不修改工作树的情况下执行此步骤。可能切换回裸机,结帐 HEAD^ 切换回非裸机?我还阅读了有关 git symbolic-ref 管道的信息但不知道怎么用)
- 重复步骤 4-5 直到根目录
- 选择尺寸最小的差异。这应该是该代码偏离的提交的一个很好的近似值。围绕该提交搜索确切的分歧点。
有没有更好的方法?有一个 semver,但它没有太多更新,所以它只是将范围缩小到大约一两年。我不相信存储库发生了很大变化,所以我猜有完全匹配的文件。也许我可以使用这些信息来缩小可能的提交范围?谢谢!
【问题讨论】: