如何自动创建Git仓库离线备份以恢复Bitbucket云端仓库?
完整备份Git仓库的可靠方法
首选方案:git clone --mirror
这是备份Git仓库最彻底、最高效的方式,专门用于完整复制远程仓库的所有内容——包括所有分支、标签、提交记录、甚至仓库配置和钩子。
你觉得本地没完整下载是因为镜像仓库是裸仓库(没有工作区,看不到文件),所有仓库数据都存在.git目录里。验证备份完整性可以在镜像仓库目录下执行:
git branch -a:查看所有远程分支(会显示origin/*的全部分支)git tag:查看所有标签git log --oneline --all:查看所有提交记录
需要恢复时,直接把这个镜像仓库推送到新的远程仓库即可:
git push --mirror <新仓库地址>
普通clone的问题与补救方法
普通git clone只会默认拉取远程的默认分支(比如main),git pull --all也仅会拉取已跟踪的远程分支,所以拿不到所有分支。如果一定要生成带工作区的备份,可以遍历远程分支逐个创建本地分支:
# 先克隆仓库 git clone <仓库地址> cd <仓库目录> # 遍历所有远程分支,创建对应的本地分支 for branch in $(git branch -r | grep -v HEAD); do local_branch=${branch#origin/} git checkout -b $local_branch $branch done # 拉取所有标签 git fetch --tags
但这种方法步骤繁琐,不如--mirror高效,适合需要直接使用工作区的场景,纯备份的话没必要。
关于遍历checkout的优劣
遍历远程分支逐个checkout能生成带工作区的完整分支备份,但备份的核心需求是完整保存仓库数据,--mirror已经一步到位,不需要额外操作。如果只是为了灾难恢复,镜像仓库足够,而且占用空间更小、操作更简单。
内容的提问来源于stack exchange,提问作者Putte
相关产品推荐
相关产品推荐

