Git工作流
title: "Git 工作流:用版本管理打理你的博客内容" date: 2026-09-17 tags: [Git, 版本管理, 工作流, 教程] category: 使用教程 description: "用 Git 管理博客内容:版本历史、多人协作、自动部署、回滚。把博客当作代码仓库来管理。"
Git 工作流:用版本管理打理你的博客内容
如果你是程序员,Git 已经是日常工具了。把博客内容也放进 Git,能获得:
- 版本历史 — 谁改了什么、什么时候改的、改了哪些内容
- 协作能力 — 多人同时编辑,合并冲突
- 自动部署 — push 后自动更新博客
- 回滚能力 — 改坏了?一键回到上一个版本
第 1 步:初始化仓库
cd /opt/aiklog/blog
git init
git remote add origin git@github.com:yourname/my-blog.git
.gitignore
# 系统文件
.DS_Store
Thumbs.db
# 编辑器
*.swp
*.swo
*~
# 临时文件
*.tmp
drafts/
首次提交
git add .
git commit -m "init: blog content"
git push -u origin main
第 2 步:日常使用
添加新文章
# 写好文章后
git add 技术/新文章.md
git commit -m "add: 新文章标题"
git push
修改文章
# 编辑文章后
git add -u # 只提交修改过的文件
git commit -m "update: 修改了xxx部分"
git push
删除文章(下线)
git rm 技术/旧文章.md
git commit -m "remove: 下线旧文章"
git push
移动文章(改分类)
git mv 技术/文章.md 读书/文章.md
git commit -m "move: 从技术移到读书"
git push
第 3 步:查看历史
# 查看提交日志
git log --oneline
# a1b2c3d update: 修改了docker文章
# e4f5g6h add: 新文章标题
# i7j8k9l init: blog content
# 查看某篇文章的历史
git log --oneline -- 技术/Docker多阶段构建实战.md
# 查看某次修改的具体内容
git show a1b2c3d
# 对比两个版本的差异
git diff HEAD~3..HEAD -- 技术/
# 查看某篇文章的所有修改
git log -p -- 技术/Docker多阶段构建实战.md
第 4 步:自动部署
push 到 Git 后,自动同步到爱库录的博客目录。
方案一:Git hook(同一台机器)
# 创建 bare 仓库(服务器端)
git init --bare /opt/aiklog/blog.git
# 配置 post-receive hook
cat > /opt/aiklog/blog.git/hooks/post-receive << 'EOF'
#!/bin/bash
GIT_WORK_TREE=/opt/aiklog/blog git checkout -f
EOF
chmod +x /opt/aiklog/blog.git/hooks/post-receive
# 本地仓库推送到 bare 仓库
cd ~/my-blog
git remote add deploy /opt/aiklog/blog.git
git push deploy main
效果: git push deploy main 后,文章自动同步到博客目录。
方案二:GitHub Actions(远程部署)
# .github/workflows/deploy.yml
name: Deploy Blog
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy to server
uses: easingthemes/ssh-deploy@main
with:
SSH_PRIVATE_KEY: ${{ secrets.SSH_KEY }}
REMOTE_HOST: ${{ secrets.HOST }}
REMOTE_USER: ${{ secrets.USER }}
SOURCE: "./"
TARGET: "/opt/aiklog/blog/"
配置 GitHub Secrets:
SSH_KEY— 服务器 SSH 私钥HOST— 服务器 IPUSER— SSH 用户名
效果: push 到 GitHub,自动部署到服务器。
方案三:Webhook
爱库录支持 webhook 触发更新:
# 在 Git 服务商(GitHub/Gitea/GitLab)配置 webhook
# URL: https://your.com/api/v1/webhook/git
# Secret: 你的 webhook 密钥
# Events: push
效果: push 后 Git 服务商通知爱库录,爱库录自动 pull 最新内容。
第 5 步:回滚
回滚某篇文章
# 查看某篇文章的历史
git log --oneline -- 技术/某文章.md
# a1b2c3d update: 修改了第三部分
# e4f5g6h add: 初始版本
# 回滚到某个版本
git checkout e4f5g6h -- 技术/某文章.md
git commit -m "revert: 回滚某文章到初始版本"
git push
回滚整个博客
# 查看历史
git log --oneline
# 回滚到某个提交
git revert HEAD
git push
# 或者直接重置(危险!会丢失之后的所有修改)
git reset --hard e4f5g6h
git push --force
协作工作流
多人维护同一个博客时,用分支工作流:
# 创建分支
git checkout -b alice/new-article
# 写文章
# ...
# 提交
git add .
git commit -m "add: alice 的新文章"
git push -u origin alice/new-article
# 发起 Pull Request / Merge Request
# 管理员审核后合并到 main
# 自动部署
每个贡献者一个分支,主分支保持稳定。
分支策略
main ← 生产环境,自动部署
├── alice/ ← alice 的工作分支
├── bob/ ← bob 的工作分支
└── drafts/ ← 草稿分支
main分支始终是博客的当前状态- 个人分支用于写作和编辑
drafts分支存放未完成的文章- 合并到
main= 发布
常见问题
Q:文章太大怎么办? A:Markdown 文件通常很小(几 KB)。即使有图片,也可以用 Git LFS 管理大文件。
Q:二进制文件(图片)放 Git 吗? A:建议图片用图床(S3、OSS、Cloudflare R2),Git 里只存 Markdown。如果一定要放 Git,用 Git LFS。
Q:冲突怎么解决? A:Markdown 文件的冲突通常很容易解决——手动编辑冲突标记,保留两边的内容。
相关:
[[用文件管理器管理博客]]— 了解文件管理的其他方式。[[Obsidian + 爱库录:笔记变博客的完整工作流]]— Obsidian 用户的工作流。