Git钩子前端项目数据备份:用 Git 钩子实现每日自动提交到私有仓库

为什么前端项目需要自动备份?

前端开发中,我们经常依赖 node_modules、构建产物等易丢失的文件,而代码仓库可能只存在于本地或某个临时分支。一旦硬盘故障或误删,损失惨重。手动备份又容易忘记。本教程将利用 Git 钩子cron(或 Windows 任务计划程序)实现每日自动提交到私有仓库,确保代码安全。

环境准备

  • 一台常开的开发机或服务器(Linux/macOS/Windows 均可)
  • Git 已安装并配置好 SSH 密钥(用于推送)
  • 一个空的私有远程仓库(如 GitHub、GitLab 或 Gitea)

分步实现

1. 初始化 Git 仓库并配置远程

复制代码
cd /path/to/your/project
git init
git remote add origin git@github.com:yourname/project-backup.git

2. 创建备份脚本

在项目根目录创建 backup.sh(Linux/macOS)或 backup.bat(Windows),内容如下:

复制代码
#!/bin/bash
# backup.sh
git add .
git commit -m "自动备份 $(date +'%Y-%m-%d %H:%M:%S')"
git push origin master --force

注意:--force 用于覆盖远程历史,避免冲突。如果远程有历史,建议先拉取合并。

3. 设置 Git 钩子

.git/hooks/ 目录下创建 post-commit 文件(无扩展名),并赋予执行权限:

复制代码
#!/bin/bash
# post-commit 钩子:提交后自动推送
bash /path/to/project/backup.sh

赋予权限:

复制代码
chmod +x .git/hooks/post-commit

这样每次 git commit 后都会自动执行备份脚本。但我们希望每日自动提交,所以还需要定时任务。

4. 配置定时任务

Linux/macOS:编辑 crontab

复制代码
crontab -e
# 每天凌晨 2 点执行
tar -czf /tmp/backup-$(date +%Y%m%d).tar.gz /path/to/project
git -C /path/to/project pull origin master
git -C /path/to/project commit --allow-empty -m "每日定时备份"
git -C /path/to/project push origin master

Windows :使用任务计划程序,设置每天触发运行 backup.bat 即可。

5. 排除不需要备份的文件

.gitignore 中添加 node_modulesdist 等,避免备份体积过大。示例:

复制代码
node_modules/
dist/
*.log

验证效果

  1. 手动执行一次 git commit --allow-empty -m "test",查看 .git/hooks/post-commit 是否触发推送。
  2. 检查远程仓库是否出现新提交,且内容与本地一致。
  3. 修改一个文件,然后等待定时任务执行,再次检查远程仓库是否更新。

如果推送失败,检查 SSH 密钥是否添加,或改用 HTTPS 并配置凭据存储。

总结

通过 Git 钩子与定时任务,我们实现了前端项目的自动备份。这个方案简单、跨平台,且不依赖第三方服务。你可以根据需要调整备份频率或增加加密压缩。现在,即使开发机崩溃,你的代码也能从远程仓库恢复。

相关推荐
duoduo_sing6 个月前
多服务器数据集中自动化备份方案
服务器·自动化·异地备份·自动备份·多服务备份·智能备份
asdfg12589639 个月前
Vite是什么?ESM是什么?
前端基础·前端工具
凌杰10 个月前
JSON 学习笔记
前端工具
大叶梧桐1 年前
oracle数据泵数据库自动备份脚本
oracle·计划任务·自动备份
伍哥的传说1 年前
还在为第三方包 bug 头疼?patch-package 让你轻松打补丁!
bug·开发效率·前端工具·第三方包bug·前端开发痛点·npm包修复·依赖包定制
!win !1 年前
免费的个人网站托管-Surge篇
前端工具·网页托管
!win !1 年前
免费的个人网站托管-PinMe篇
前端·前端工具
!win !1 年前
免费的个人网站托管-InfinityFree
服务器·前端工具
!win !1 年前
Trae安装指定版本的插件
前端工具·trae