有什么方法可以恢复已被代码删除的GitHub存储库和本地保存的提交历史记录?

时间:2019-10-31 21:21:29

标签: git github

基本上,我所在的团队拥有一个GitHub存储库,该存储库现已删除。我仍然将代码保存在本地计算机上,并希望将该项目放在我的个人GitHub上。我希望有某种方式可以使提交历史记录保持完整,以便其他团队成员可以为自己所做的工作表示赞赏。但是,由于该存储库已用完,所以我无法再进行此操作。有什么方法可以做,还是我应该重新创建存储库并将其记入自述文件中?还是完全不使用它?

1 个答案:

答案 0 :(得分:1)

首先,提交历史记录存储在存储库每个副本的 .git 文件夹中。它不是由Github存储或管理的,相反,Github的仓库副本也有一个 .git 文件夹,其中包含与本地副本相同的提交历史记录。基本上,只要 .git 文件夹为“ intact ”,那么当您< em> push 仓库在其他任何地方。

第二,Github 支持恢复或还原已删除的仓库,请参阅Github文档中的Restoring a deleted repository。但是,该选项取决于您是否拥有创建旧存储库的帐户或组织,以及是否在超过90天的时间内未删除旧存储库,以及该旧存储库是否没有分支。如果您可以还原它,则可以将其存储到您的个人帐户中。

如果不能选择恢复旧存储库,则另一个选项(简单,恕我直言)是创建一个新存储库,并将本地副本推送到该新远程服务器上。当您说“ 已将代码本地保存在我的计算机上”时,我认为它仍然是一个工作正常的git存储库,如下所示:

$ 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并创建一个全新的仓库。当它将您重定向到“您的新存储库为空”页面时,请注意有关推送现有存储库的说明:

enter image description here

由于您的本地副本中已经有一个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

该新仓库现在将包含所有旧提交,就像旧提交一样。