【问题标题】:Restore orgin repository using a remote repository使用远程存储库恢复原始存储库
【发布时间】:2012-02-23 19:29:53
【问题描述】:

我正在尝试在标准备份之外的 git 部署中构建一些冗余。在纸面上,使用我创建并链接/同步到使用 git remote 的存储库来恢复多个用户克隆的存储库似乎很容易。

过去,我遇到过备份磁带的问题,要么备份错误,要么必须从异地检索磁带。我正在研究为丢失的 repo 托管本地分支的服务器遭受灾难性故障的远程可能性,我需要在短期内备份和运行大型源库,并最大限度地减少中断。

这里的想法是维护一个离线服务器,该服务器只是在接收来自生产设备的更新时闲置。当生产箱内爆时,我会将服务器别名为备份服务器并制作“丢失”远程分支的本地副本

到目前为止,这是我正在考虑的每个存储库的还原路径:

- grep for the dead servers alias
- Parse for the remote branch names
- checkout the remote branches to the recovery repository
- Remove the dead servers alias

例如使用 tcsh:

foreach q (git branch -a | grep kaboom-1 | cut -f 2 -d '/')

git checkout -b 分支 kaboom-1/branch

结束

git 远程 rm kaboom

在测试中,这非常有效,但在实验室中进行的测试并不总是直接转化为现实世界的可行性。过去是否有人执行过这种类型的恢复,或者您是否发现这种方法存在问题?

【问题讨论】:

    标签: git repository restore


    【解决方案1】:

    这听起来有点尴尬,因为 git 有一个不错的备份功能,带有 clone 和 --mirror 参数。我会在主仓库上使用 git clone --mirror 并且每次将某些内容推送到主仓库时都会不断更新我的镜像(它们完全相同)。如果事情进展顺利,很容易从其中一个镜像克隆中克隆一个新的 repo 并继续。

    那就这样吧:

    git clone --mirror main_repo.git
    

    您想要多次克隆主仓库的镜像。请记住 --mirror 意味着 --bare,因此它们没有任何工作目录,就像主 repo 一样。

    当主仓库中发生某些事情并且您想要同步镜像时,在每个镜像中执行以下操作:

    git remote update
    

    此命令完成后,此裸镜像克隆再次与主存储库相同。

    【讨论】:

    • 如何将主仓库恢复到镜像状态?
    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 2012-10-28
    • 2020-07-16
    • 2013-09-30
    • 2012-06-25
    • 2021-11-22
    • 2011-09-12
    相关资源
    最近更新 更多