meta-description: 使用Git进行WordPress版本控制完整教程,详解从开发到部署的完整工作流程。
keywords: WordPress Git,Git版本控制,自动部署,子模块,staging环境
# 使用Git进行WordPress版本控制
本文详细介绍如何使用Git管理WordPress代码,包括主题、插件开发和自动部署工作流。
## 为什么使用Git管理WordPress
| 优势 | 说明 |
|------|------|
| 版本追踪 | 追踪每次修改 |
| 团队协作 | 多人同时开发 |
| 快速回滚 | 出错立即恢复 |
| 自动部署 | push即部署 |
| 代码审查 | Pull Request流程 |
## 仓库结构设计
### 推荐结构
wordpress-site/
├── .git/
├── .gitignore
├── README.md
├── composer.json
├── wp-config-production.php
├── wp-config-staging.php
├── scripts/
│ ├── deploy.sh
│ └── backup.sh
└── wp-content/
├── themes/
│ └── my-theme/ # 自建主题目录
├── plugins/
│ └── my-plugin/ # 自建插件目录
└── mu-plugins/
└── site-specific.php
### .gitignore配置
# WordPress核心
wordpress/
wp-admin/
wp-includes/
index.php
license.txt
readme.html
wp-*.php
xmlrpc.php
# 配置文件(环境相关)
wp-config.php
wp-config-*.php
# 上传的文件
wp-content/uploads/
wp-content/upgrade/
# 缓存
wp-content/cache/
wp-content/object-cache.*/
# 日志
*.log
error_log
# 系统文件
.DS_Store
Thumbs.db
# IDE
.vscode/
.idea/
*.swp
## 子模块管理
### 使用Git Submodule管理插件
# 添加插件作为子模块
git submodule add https://github.com/plugin-author/plugin-repo.git wp-content/plugins/plugin-name
# 更新所有子模块
git submodule update --remote
# 克隆时初始化子模块
git clone --recurse-submodules
### 私有主题开发
# 创建主题分支
git checkout -b feature/new-header
# 开发完成后合并
git checkout main
git merge feature/new-header
# 打标签发布版本
git tag -a v1.2.3 -m "Release v1.2.3"
git push origin v1.2.3
## 工作流设计
### 功能分支工作流
graph LR
A[main分支] --> B[创建功能分支]
B --> C[开发测试]
C --> D[提交PR]
D --> E[代码审查]
E --> F{审查通过?}
F -->|是| G[合并到main]
F -->|否| C
G --> H[自动部署到staging]
H --> I[测试通过?]
I -->|是| J[部署到生产]
I -->|否| C
### 实际命令
# 1. 创建功能分支
git checkout -b feature/contact-form
# 2. 开发(编辑文件)
# 修改 wp-content/themes/my-theme/contact.php
# 3. 提交
git add wp-content/themes/my-theme/contact.php
git commit -m "feat: 添加联系表单功能"
# 4. 推送到远程
git push origin feature/contact-form
# 5. 在GitHub/GitLab创建PR
# 6. 审查通过后合并
## 自动部署配置
### 使用GitHub Actions
# .github/workflows/deploy.yml
name: Deploy to Production
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Deploy to Server
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.SSH_KEY }}
script: |
cd /var/www/html/wp-content/themes/my-theme
git pull origin main
composer install --no-dev
wp cache flush
### 使用Git Hook
# .git/hooks/post-receive(服务器端)
#!/bin/bash
TARGET="/var/www/html/wp-content/themes/my-theme"
GIT_DIR="/home/git/repo.git"
BRANCH="main"
while read oldrev newrev refname; do
if [[ $refname = "refs/heads/$BRANCH" ]]; then
echo "部署 $BRANCH 分支..."
git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f $BRANCH
cd $TARGET
composer install --no-dev
wp cache flush
echo "部署完成!"
fi
done
## 数据库版本控制
### 使用WP-CLI迁移数据库
# 导出数据库(排除临时数据)
wp db export - --tables=$(wp db tables --all --format=csv | grep -v '_transient') > dump.sql
# 在另一环境导入
wp db import dump.sql
# 搜索替换域名
wp search-replace 'https://dev.example.com' 'https://example.com' --skip-columns=guid
### 使用Migrate DB Pro
- 支持数据库同步
- 支持媒体文件同步
- 支持查找替换
## 多环境配置
### wp-config.php环境检测
// 检测环境
if (strpos($_SERVER['HTTP_HOST'], 'dev.') !== false) {
define('WP_ENVIRONMENT_TYPE', 'development');
require_once __DIR__ . '/wp-config-development.php';
} elseif (strpos($_SERVER['HTTP_HOST'], 'staging.') !== false) {
define('WP_ENVIRONMENT_TYPE', 'staging');
require_once __DIR__ . '/wp-config-staging.php';
} else {
define('WP_ENVIRONMENT_TYPE', 'production');
require_once __DIR__ . '/wp-config-production.php';
}
### 环境变量管理
# .env(不要提交到Git)
DB_NAME=wordpress
DB_USER=wp_user
DB_PASSworD=secret_password
WP_HOME=https://example.com
WP_SITEURL=https://example.com
// wp-config.php
$env = parse_ini_file(__DIR__ . '/.env');
define('DB_NAME', $env['DB_NAME']);
define('DB_USER', $env['DB_USER']);
define('DB_PASSworD', $env['DB_PASSworD']);
## 最佳实践
1. 不要提交敏感信息:API密钥、密码等使用环境变量
2. 使用.gitignore:排除上传文件、缓存等
3. 小步提交:每个功能独立提交
4. 写清楚的提交信息:使用约定式提交(Conventional Commits)
5. 使用PR模板:统一PR格式
## 常见操作
# 回滚到上一个版本
git reset --hard HEAD~1
# 恢复误删的文件
git checkout HEAD -- path/to/file
# 查看某次提交的改动
git show
# 暂存当前修改
git stash
git stash pop
使用Git管理WordPress可以大幅提升开发效率和代码质量。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)