如何备份包含所有分支的完整Git历史记录与代码
全分支带工作区Git完整备份方法
各命令特性说明
不同clone参数的行为差异如下,和带工作区全分支备份的需求不匹配:
- 普通
git clone {url}:默认拉取全部分支的提交对象,但仅为默认主分支(main/master)创建本地分支,其余分支仅保留远端引用,直接查看本地分支时容易误以为只拉取了主分支内容 git clone --bare、git clone --mirror:两个命令创建的都是裸仓库,设计定位是服务端中转仓库,本身不带工作区,不会检出实际代码文件,因此无法直接查看可编辑的代码文件
正确操作步骤
- 执行带全分支拉取参数的克隆命令,得到带工作区的普通仓库,拉取所有分支的完整提交历史:
git clone --no-single-branch {替换为你的仓库地址}
克隆完成后进入仓库目录,执行git branch -a即可看到所有分支的引用,所有提交历史已经完整保存在本地。
- 如果你需要为所有远端分支创建对应的本地分支(切换分支时不需要手动指定远端引用),在仓库目录下执行以下批量命令即可:
for remote_branch in `git branch -r | grep -v HEAD`; do local_branch=${remote_branch#origin/} git branch --track $local_branch $remote_branch done
执行完成后,运行git branch就能看到全量本地分支,切换任意分支都能直接加载对应分支的工作区代码,所有历史记录完整保留,满足完整备份需求。
内容的提问来源于stack exchange,提问作者vincentsty
相关产品推荐
相关产品推荐

