git - 有没有办法恢复已删除的 GitHub 存储库,其中包含本地保存的代码和提交历史记录?
问题描述
本质上,我所在的团队有一个现在已删除的 GitHub 存储库。我仍然将代码保存在本地计算机上,并希望将项目放在我的个人 GitHub 上。我希望有某种方法可以使提交历史保持完整,以便其他团队成员可以对他们所做的工作感到满意。但是,由于 repo 已经消失,我不能再分叉它来执行此操作。有什么办法可以做到这一点,还是我应该重新创建回购并将它们记入自述文件中?还是完全不做?
解决方案
首先,提交历史存储在每个 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 现在将包含所有旧的提交,就好像它就像旧的一样。
推荐阅读
- database - 想根据以下要求创建表
- ios - 在 iOS 15 中选择退出 SwiftUI 文本 Markdown 支持
- r - 如何从 Excel 导出数据以使用 timevis 在 R 中创建时间线
- git - 如果我强制推送到我的远程存储库,它会影响主分支吗?
- javascript - 如果 iframe 导航到在新选项卡中打开的外部域
- android - 使用 AWS Cognito 为 Android 应用程序实施基于 PIN 的登录
- mysql - 如何向 laravel 迁移中的所有现有表添加新列
- r - 如何按特殊字符对r中的唯一ID按值分组
- swiftui - 如何跟踪值更改以自定义`.animation`
- spring-boot - 如何使用 Spring Boot 引导 gRPC 应用程序