使用`git push`来恢复远程存储库是否可以?

时间:2014-06-26 00:17:49

标签: git

假设我们刚刚丢失了一个远程存储库,因为有人不小心输入了以下命令。

rm -rf OurRepo.git

为了恢复它,我们计划使用top-voted answers之一来解决之前的问题。

然而,我观察到没有一种解决方案提到以下三步策略。

  1. 使用git init --bare重新创建远程存储库。
  2. 设置新的远程git remote add origin <new repository URL>
  3. 使用其中一台拥有最新repo副本的计算机中的git push origin master
  4. 我在玩具库中尝试了这个并且显示可以工作,但我的一位同事声称它存在问题而无法查明原因。

    任何人都可以确认或否认这是否是恢复丢失的遥控器的合理方法?

1 个答案:

答案 0 :(得分:4)

不,您提出的策略应该没有任何问题,事实上这将是恢复远程存储库的典型方法(尽管不是唯一的方法)。

不要忘记将标签与分支一起推送:

git push origin --tags --all

该命令将推送.git/refs/heads/下的所有分支以及.git/refs/tags/下的所有分支。如果您不想推送所有分支,只需为要推送的每个分支命名,而不是使用--all

在这种情况下,您可能希望避免使用--mirror,因为这将推送.git/refs/下的所有引用,其中包括您本地的远程跟踪分支回购,你可能不需要或想要你的遥控器。

替代

使用git push恢复远程的另一种方法是使用--bare选项从另一个仓库克隆一个新远程:

git clone --bare <otherRepo> <newRepoName>

文档