假设我们刚刚丢失了一个远程存储库,因为有人不小心输入了以下命令。
rm -rf OurRepo.git
为了恢复它,我们计划使用top-voted answers之一来解决之前的问题。
然而,我观察到没有一种解决方案提到以下三步策略。
git init --bare
重新创建远程存储库。git remote add origin <new repository URL>
。git push origin master
我在玩具库中尝试了这个并且显示可以工作,但我的一位同事声称它存在问题而无法查明原因。
任何人都可以确认或否认这是否是恢复丢失的遥控器的合理方法?
答案 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>