假设一个人克隆了一个git存储库并删除了.git文件夹。有没有办法恢复他们所在的提交?这不是Best way to restore .git folder或Can deleted .git be restored?的重复,因为多年以来发生了这件事情。我现在正在尝试将其还原到git中,以便将其更新为新版本。但是,在这些年中可能已经引入了更改,我需要将其合并 / rebase 到新版本上。
我的当前想法是:
1. 使用
有更好的方法吗?有一个 semver,但它没有经常更新,因此仅将范围缩小到一两年左右。我不认为存储库有太多变化,所以我猜测存在精确匹配的文件。也许我可以使用这些信息来缩小可能的提交?谢谢!
我的当前想法是:
1. 使用
git clone --bare
从github克隆当前仓库到另一个文件夹
2. 使用git config --local --bool core.bare false
将仓库标记为非裸仓库
3. 将神秘版本的文件复制到此文件夹中
4. 在某个地方保存工作树与当前提交哈希的差异
5. 将HEAD更新为HEAD^(不确定如何执行此步骤而不修改工作树。可能切换回裸仓库,checkout HEAD^然后再切换回非裸仓库?我也读过 git symbolic-ref plumbing ,但不知道如何使用它)
6. 重复步骤4-5直到到达根目录
7. 选择最小尺寸的差异。那应该是这段代码分叉时的很好近似。在该提交周围搜索确切的分歧点。有更好的方法吗?有一个 semver,但它没有经常更新,因此仅将范围缩小到一两年左右。我不认为存储库有太多变化,所以我猜测存在精确匹配的文件。也许我可以使用这些信息来缩小可能的提交?谢谢!
git diff
将打印/调用查看器。此外,似乎所有的空格都被更改了。因此,我用echo "$rev" `git diff -w --shortstat "$rev" "_tmp_" >> ../diffs.txt
替换了命令,然后扫描并找到了插入/删除最少的那个。 - jgawrych