首页 > 解决方案 > 有没有办法恢复已删除的 GitHub 存储库,其中包含本地保存的代码和提交历史记录?

问题描述

本质上,我所在的团队有一个现在已删除的 GitHub 存储库。我仍然将代码保存在本地计算机上,并希望将项目放在我的个人 GitHub 上。我希望有某种方法可以使提交历史保持完整,以便其他团队成员可以对他们所做的工作感到满意。但是,由于 repo 已经消失,我不能再分叉它来执行此操作。有什么办法可以做到这一点,还是我应该重新创建回购并将它们记入自述文件中?还是完全不做?

标签: gitgithub

解决方案


首先,提交历史存储在每个 repo 副本的.git文件夹中。它不是由 Github 存储或管理的,而是 Github 的 repo 副本也有一个.git文件夹,其中包含与本地副本相同的提交历史记录。基本上,只要那个.git文件夹是“完整的”,那么当你将 repo送到其他任何地方时,提交历史仍然是“完整的”。

其次,Github确实支持恢复或恢复已删除的存储库,请参阅从 Github 文档中恢复已删除的存储库。但该选项取决于您是否拥有创建旧存储库的帐户或组织,以及旧存储库是否已超过 90 天未被删除,以及该旧存储库是否没有分叉。如果您可以恢复它,那么您可以将其分叉到您的个人帐户。

如果恢复旧的仓库不是一个选项,另一个(更简单,恕我直言)选项是创建一个新的仓库并将您的本地副本推送到该新远程。当您说您“将代码本地保存在我的计算机上”时,我假设它仍然是这样的工作 git repo:

$ cd myproject
$ git log
$ git remote -v
origin  git@github.com:ginomempin/my-old-repo.git (fetch)
origin  git@github.com:ginomempin/my-old-repo.git (push)

其中my-old-repo.git是已删除的 Github 存储库,日志仍显示所有提交。转到 Github 并创建一个全新的 repo。当它将您重定向到“您的新存储库为空”页面时,请注意推送现有存储库的说明:

在此处输入图像描述

因为您的本地副本中已经有一个origin,您可以改为将其更改为新 URL:

$ git remote set-url origin git@github.com:ginomempin/my-new-repo.git
$ git remote -v
origin  git@github.com:ginomempin/my-new-repo.git (fetch)
origin  git@github.com:ginomempin/my-new-repo.git (push)

现在只需将其全部推送到新的仓库:

$ git push --all

新的 repo 现在将包含所有旧的提交,就好像它就像旧的一样。


推荐阅读