代码之家  ›  专栏  ›  技术社区  ›  Pius Raeder

如何从git包中恢复gitlab存储库?

  •  0
  • Pius Raeder  · 技术社区  · 8 年前

    我告诉我的同事停止与远程存储库的交互,并询问OPs我是否可以获得该存储库的每日备份。我收到一封信 repositoryname.bundle

    现在我如何用这个捆绑文件恢复遥控器?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Pius Raeder    8 年前

    我自己就这样解决了。

    在那里创建一个临时目录和cd

    cd $(mktemp -d)
    

    mv /tmp/yourrepo.bundle .
    

    将损坏的存储库从GitLab克隆到broken

    git clone --mirror URL_to_yourrepo BROKEN.git
    

    cd BROKEN.git
    git bundle verify ../yourrepo.bundle
    

    返回,然后从bundle文件克隆一个新的存储库

    cd ..
    cd git clone --mirror yourrepo.bundle LASTKNOWNGOOD.git
    

    cd在那里,并验证你所有的裁判都在那里,因为你期待他们

    cd LASTKNOWNGOOD.git
    git show-ref
    

    现在将远程存储库设置为GitLab中的本地断开克隆

    git remote add BROKEN ../BROKEN.git
    

    然后把这里的东西推到坏了的遥控器上

    git push --tags --force --mirror BROKEN
    

    到那时,损坏的存储库应该得到修复。 将cd放入断开并模拟一次推送,以验证它是否能达到预期效果

    cd ../BROKEN.git
    git push --tags --verbose --dry-run --mirror origin
    

    如果它看起来像你期望的那样,那就不要跑 --dry-run 修复远程存储库。 它可能会报告 remote rejected 但只要他们来自 keep-around 你可以放心地忽略他们。 您还需要在GitLab中重新打开该存储库的所有自动关闭的合并请求。