从github恢复git提交历史记录



一个心怀不满的开发人员离开了一个破坏git存储库的项目,我现在被请来了。我不确定她到底做了什么,但事实如下:

  • github之前有一个完整的提交历史,我知道我想成为当前负责人的提交的SHA
  • 我可以使用github url中的SHA查看此提交购买:https://github.com/[用户]/[项目]/tree/d5f7068fcef33791418e3e1d2b954162403e7c8b
  • 当我在本地检查项目时,除了她上次提交的只是一个空白的自述文件之外,它不会提取任何历史记录:

    $ git log
    commit 4cbfb43f76a41df6de6f66354566377c2ef2ab0d
    Author: Author
    Date:   Sun Sep 1 20:39:47 2013 +0300
        initial
    

我不能重新基准,因为我的本地回购不知道SHA的提交,因为只有这一个提交来自github。我想要的历史似乎成了孤儿。

有没有一种方法可以直接从github(origin)通过SHA检查另一个提交,然后让头指向它?

还有其他想法吗?

您应该能够执行git merge <SHA>,因为糟糕的开发人员重新建立了基础,所以会抱怨,但考虑到她只是重新建立了初始提交的基础,解决冲突听起来相对容易。

如果您的本地存储库不知道提交,但远程存储库知道,那么尝试对远程存储库进行新的克隆,看看您要查找的提交是否存在。据我所知,git,如果提交是远程存在的,并且您克隆了存储库,那么您应该能够访问该提交。

我最终从github上的最后一次良好提交中下载了repo的zip,然后将所有文件添加并提交到被破坏的repo。我丢失了以前所有的提交历史记录,但至少现在有一个有效的回购。

最新更新