首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从“工作树”找到提交

从“工作树”找到提交
EN

Stack Overflow用户
提问于 2018-03-01 22:34:13
回答 1查看 199关注 0票数 2

假设有人克隆了一个git存储库并删除了.git文件夹。有什么方法可以恢复他们所犯的错误吗?这并不是Best way to restore .git folderCan deleted .git be restored?的复制,因为这一事件已经过去多年了。现在,我正在尝试将其重新置于git下,以便将其更新为新版本。但是,在这些年中可能已经引入了一些更改,因此我需要将/重新基础合并到新版本上。

我目前的想法是:

  1. 使用git clone --bare将当前存储库从github克隆到另一个文件夹
  2. 使用git config --local --bool core.bare false将回购标记为非裸
  3. 将神秘版本中的文件复制到此文件夹中
  4. 使用当前提交哈希保存工作树的差异。
  5. 头对头^(不太确定如何在不修改工作树的情况下完成此步骤)。可能切换回裸,结帐头^切换回非裸?我也读过关于git符号-参考管道,但不知道如何使用它)
  6. 重复步骤4-5,直到根目录
  7. 选择最小大小的差异。这应该是这个代码偏离的提交的一个很好的近似值。在提交的周围搜索确切的发散点。

有更好的办法吗?有一个词组,但它没有被更新太多,所以它只将范围缩小到大约一两年。我不相信存储库发生了很大的变化,所以我想应该有完全匹配的文件。也许我可以利用这些信息来缩小可能的提交范围?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-01 22:51:09

我会这样做:

  1. 将实际的源提交到某个分支(例如_tmp_),以便索引是干净的
  2. 迭代所有可能的提交(例如git rev-list master)并检查差异 git rev-list master | while read rev; do git diff "$rev" "_tmp" && echo "it is $rev!" done_tmp_包含存储库中未跟踪的文件时,git diff将永远不会成功,您必须分析差异(例如,在wc -l最低的情况下)。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49059767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档