Git 自动化部署
最近大创,写了一些代码,当然是vibe出来的,也学了一些git的使用,记录一下。以下为ai创作。
📖 劳工合同保护平台:Git 自动化部署全生命周期档案
本档案记录了项目从本地初始化(Init)到云端自动化流转的每一个标准动作与救急方案。
阶段零:创世大爆炸 (绝对起步)
场景:你刚在本地 VS Code 写完了第一版 Next.js 代码,现在需要建立 Git 仓库。
1. 本地初始化
在本地项目根目录的终端执行: ```bash
初始化本地仓库
git init
将所有文件暂存(注意配置好 .gitignore,不要把 node_modules 传上去)
git add .
完成创世提交
git commit -m "feat: 项目初始化,搭建劳工合同保护平台基础框架" ```
2. 关联云端 (GitHub)
在 GitHub 新建一个空仓库后,将其与本地关联: ```bash
关联远程仓库(建议使用 SSH 地址,避免密码验证烦恼)
git remote add origin git@github.com:ExXTong/ContractProtection.git
(可选)规范主分支名称
git branch -M master
第一次推送到云端(-u 会记住关联,以后只需写 git push)
git push -u origin master ```
阶段一:服务器破冰 (初次连接)
场景:代码已经在 GitHub 上了,现在需要让腾讯云服务器获取第一版代码。
方式 A:服务器直接克隆(推荐,最干净)
如果服务器上还没有代码文件夹:
bash
cd ~
git clone git@github.com:ExXTong/ContractProtection.git
cd ContractProtection
npm install
npm run build
pm2 start npm --name "contract-app" -- run start -- -H 0.0.0.0
方式 B:服务器已有旧文件,强行合体
如果你已经在服务器执行过 git init:
```bash
git remote add origin git@github.com:ExXTong/ContractProtection.git
强行拉取并允许不相关的历史合并
git pull origin master --allow-unrelated-histories ```
阶段二:日常敏捷开发流 (黄金循环)
场景:项目进入正常开发节奏,每天需要更新 UI 或修复 Bug。
这是你以后每天唯一需要重复的标准动作:
Step 1: 本地开发与推送
在 VS Code 中修改完代码后(或使用界面按钮同步):
bash
git add .
git commit -m "update: 优化了合同上传的验证逻辑"
git push
Step 2: 服务器一键生效
登录腾讯云服务器,进入项目目录,运行你写好的部署脚本:
bash
./deploy.sh
附:终极 deploy.sh 脚本标准源码
(此脚本采用 fetch + reset 策略,彻底杜绝服务器端的代码合并冲突)
```bash
!/bin/bash
echo "🚀 正在强制同步 GitHub 最新代码..."
放弃服务器端的所有本地修改,完全以 GitHub 为准
git fetch --all git reset --hard origin/master
echo "📦 正在安装依赖..." npm install
echo "🏗️ 正在构建生产版本 (解除内存限制)..." export NODE_OPTIONS="--max-old-space-size=3072" npm run build
echo "♻️ 正在重启 PM2 守护进程..." pm2 restart contract-app || pm2 start npm --name "contract-app" -- run start -- -H 0.0.0.0
echo "✅ 平台更新完毕,可通过 HTTPS 访问!" ```
阶段三:危机干预 (时光倒流与强制覆盖)
场景:合并代码时弄乱了、或者推送了包含高危错误的代码,需要紧急回档。
核心原则:服务器不思考,一切以本地和 GitHub 的最终共识为准。
1. 救本地:彻底放弃还没提交的“瞎改”
如果在本地写代码时思绪全乱了,想回到上一次提交的干净状态: ```bash
撤销所有未提交的修改(慎用!刚敲的代码会消失)
git checkout . ```
2. 救历史:本地时光倒流并覆盖 GitHub
如果已经把错误的代码 push 到了 GitHub(就像之前发生的那样):
```bash
1. 查阅历史,找到那个“正确”的节点 ID
git log --oneline -n 5
2. 本地强行回滚到正确的节点(例如 620c88b)
git reset --hard 620c88b
3. 带着正确的历史,暴力覆盖 GitHub
git push origin master --force ```
3. 救服务器:服务器状态异常
如果服务器在更新时报 divergent branches 或其他 Git 历史错乱:
```bash
不要犹豫,直接强行重置为云端状态
git fetch origin master git reset --hard origin/master ```
阶段四:安全加固 (漏洞修复规范)
场景:依赖库提示 high severity vulnerabilities。
操作规范:永远在本地修,永远不在服务器修。
- 本地修复:
bash # 使用官方源强制修复 npm audit fix --force --registry=https://registry.npmjs.org/ - 本地质检: 运行
npm run dev确保项目没崩。 - 上交云端:
git commit并git push。 - 服务器同步: 执行
./deploy.sh。