真正适合归档/备份的方案是 git bundle,它把整个仓库历史打包成单个二进制文件,可校验、可传输、无网络依赖;PHP 项目还需确保 composer.lock 已提交,并建议在备份包名中包含 PHP 版本。

远程仓库备份不是 git clone,而是用 git bundle
直接 git clone 得到的是带工作区的本地副本,不是“备份”——它依赖远程地址、可能被误改、无法离线验证完整性。真正适合归档/备份的方案是 git bundle,它把整个仓库历史打包成单个二进制文件,可校验、可传输、无网络依赖。
-
git bundle create repo.bundle --all:打包所有分支和标签(含refs/remotes/*) - 若只备份主干,用
git bundle create repo.bundle main develop --tags - 生成后立刻校验:
git bundle verify repo.bundle,失败说明打包过程出错或磁盘损坏
PHP 项目要额外保存 composer.lock 和 vendor 状态
Git 不跟踪 vendor/,但生产环境依赖版本必须锁定。仅备份代码仓库不够,composer.lock 是关键凭证。
- 每次打
git bundle前,确认已提交最新的composer.lock(运行composer update --lock或composer install后检查状态) - 如需完整可复现环境,可额外压缩
vendor/(不推荐长期存,体积大;临时灾备可选):tar -czf vendor.tgz vendor/ - 备份包命名建议包含 PHP 版本,例如
myapp-php8.2-bundle-20240520.bundle,避免后续部署时因扩展缺失报错
自动化备份脚本里别硬编码远程 URL
很多人在脚本里写死 git remote add origin https://...,结果换服务器或改域名就失效。正确做法是读取当前仓库配置。
稻草人企业站程序,是一款简单开源的企业站程序,程序分为php+sqlite、php+mysql两个版本,程序采用php+smarty模板技术 修改模板方便,程序采用面对对象 模块开发.调用管理方便,程序可以开启伪静态功能,后台能编辑删除文件,后台能进行数据库管理、备份等操作,生成百度sitemap、Google sitemap功能,留言发邮件功能。 稻草人企业站程序 v1.0.7升级 1、增加安
- 用
git config --get remote.origin.url获取当前远程地址,记录到备份日志中(非存进 bundle) - 备份脚本中避免
git push或git fetch操作——它们需要网络且可能失败,与“离线备份”目标冲突 - 加时间戳和 Git 提交号到文件名:
repo-$(git rev-parse --short HEAD)-$(date +%Y%m%d).bundle
恢复时 git bundle 不能直接 push 到远程
git bundle 是快照,不是远程镜像。想恢复到原远程仓库,得先解包为本地仓库,再推过去——但要注意权限和保护分支策略。
立即学习“PHP免费学习笔记(深入)”;
- 新建空目录,
git init,然后git pull /path/to/repo.bundle --all - 若原远程有 protected branch(如 main),需临时取消保护,或用
git push origin +main:main强制推送(+ 表示 force) - 恢复后务必检查
composer install是否成功,特别是ext-mbstring、ext-xml这类 PHP 扩展是否启用,否则即使代码还原了也跑不起来










