Git چطور تیم وردپرس را از آشوب نجات میدهد؟
راهنمای Git برای وردپرس؛ branch، commit، merge و .gitignore برای مدیریت حرفهای نسخه قالب و افزونه در تیم.
در وردپرس، Git یکی از ضروریترین ابزارهای توسعه حرفهای است که تیم را از آشوب نسخهبندی نجات میدهد و امکان همکاری همزمان چند توسعهدهنده روی قالب و افزونه را ممکن میسازد. بدون استراتژی Branch، بدون فایل .gitignore صحیح و بدون فرآیند Code Review، هر پروژه وردپرسی در مقیاس بزرگ به مجموعهای از فایلهای پراکنده تبدیل میشود که بازسازی آن هفتهها زمان میبرد. تفاوت Git و SVN، مدل Branching و استراتژی Merge، تصمیمهای معماری را به تصمیمهای تیمی گره میزند و انتخاب اشتباه هر کدام، هزینه پنهان ایجاد میکند. مدیریت فایلهای حساس، جداسازی محیط توسعه از تولید و استراتژی انتشار، سه لایه ضروری در Git Workflow هستند و نادیده گرفتن هر کدام، هزینه نگهداشت را چند برابر میکند. تست Git Workflow در سه سطح Commit، Branch و Release انجام میشود و بدون آن، انتشار به تولید ریسک بالایی دارد. در این راهنما از اصول پایه تا استقرار تولیدی Git در پروژههای وردپرسی را با نگاه مهندسی و کد عملی پوشش میدهیم.
در پروژههای واقعی، اولین بار که با تیم دو یا چند نفره روی یک قالب کار میکنم، بدون Git، اختلاف فایلها و کد از دست رفته به یک کابوس روزانه تبدیل میشود. این راهنما از همان نقطهای شروع میکند که تجربه میگوید بیشترین ارزش را دارد.
Git چیست و چرا برای وردپرس ضروری است؟
Git یک سیستم کنترل نسخه توزیعشده است که هر تغییر در کد را ثبت میکند و امکان بازگشت، مقایسه و همکاری همزمان را فراهم میسازد.
در وردپرس، Git برای سه هدف اصلی استفاده میشود:
- مدیریت نسخه قالب و افزونه اختصاصی.
- همکاری چند توسعهدهنده روی یک پروژه.
- استقرار خودکار در محیط تولید.
پیش از ادامه، راهنمای Child Theme حرفهای و سفارشیسازی را مطالعه کنید. اگر با ساختار فایلهای قالب آشنایی ندارید، راهنمای ساختار فایلهای قالب استاندارد وردپرس نقطه شروع مناسبی است.
تفاوت Git و SVN
Git توزیعشده است و هر توسعهدهنده یک نسخه کامل دارد. SVN متمرکز است و نیازمند اتصال به سرور مرکزی است. برای پروژههای وردپرسی مدرن، Git انتخاب استاندارد است.
راهاندازی Git در پروژه وردپرسی
راهاندازی Git در پروژه وردپرسی، نیازمند درک ساختار پوشه است. معمولاً فقط قالب یا افزونه اختصاصی در Git قرار میگیرد، نه کل وردپرس.
# در پوشه قالب یا افزونه
cd wp-content/themes/mycustom-theme/
git init
git add .
git commit -m "Initial commit: theme structure"
git branch -M main
git remote add origin git@github.com:user/mycustom-theme.git
git push -u origin main
مخزن کامل وردپرس یا فقط محتوا
دو رویکرد وجود دارد:
- مخزن کامل وردپرس: همه فایلها شامل هسته، قالب و افزونه. مناسب پروژههای کوچک.
- مخزن اختصاصی: فقط قالب و افزونه اختصاصی. مناسب پروژههای حرفهای با مدیریت Composer.
برای پروژههای متوسط و بزرگ، رویکرد دوم توصیه میشود.
فایل .gitignore حرفهای
فایل .gitignore از اضافه شدن فایلهای غیرضروری یا حساس به مخزن جلوگیری میکند.
# WordPress core
/wp-admin/
/wp-includes/
/wp-*.php
/index.php
/xmlrpc.php
/license.txt
/readme.html
# Uploads
/wp-content/uploads/
# Cache
/wp-content/cache/
/wp-content/advanced-cache.php
/wp-content/wp-cache-config.php
# wp-config
wp-config.php
wp-config-local.php
# Node modules
node_modules/
vendor/
# Build artifacts
build/
dist/
# Logs
*.log
# OS files
.DS_Store
Thumbs.db
# Editor files
.idea/
.vscode/
*.sublime-*
فایلهای حساس که هرگز نباید Commit شوند
wp-config.php
.env
*.pem
*.key
.htpasswd
uploads/
backups/
نمونه .gitignore برای قالب اختصاصی
node_modules/
build/
.DS_Store
*.log
.env
.vscode/
.idea/
acf-json/ # در صورت ذخیره در قالب
languages/*.mo
استراتژی Branch در پروژه وردپرس
Branching استراتژی، تعیین میکند که چگونه تغییرات را سازماندهی کنید.
# استراتژی GitHub Flow
main → نسخه پایدار تولید
develop → نسخه در حال توسعه
feature/xyz → ویژگی جدید
bugfix/xyz → رفع باگ
hotfix/xyz → رفع فوری در تولید
استراتژی Branch برای تیمهای کوچک
main → تولید
staging → آزمایش
feature/xyz → توسعه
قواعد نامگذاری Branch
feature/add-checkout-field
bugfix/fix-login-error
hotfix/critical-security-patch
refactor/theme-header
docs/update-readme
راهنمای برنچ در Git راهنمای مدیریت شاخهها نقطه شروع مناسبی است.
Commit و پیامهای استاندارد
Commit واحد اصلی ثبت تغییرات است. پیام Commit باید واضح، کوتاه و توصیفی باشد.
# ساختار Conventional Commits
<type>(<scope>): <subject>
type: feat, fix, docs, style, refactor, test, chore
scope: theme, plugin, functions, header, footer
subject: توصیف کوتاه
نمونه پیامهای استاندارد
feat(theme): add mega menu support
fix(plugin): resolve HPOS compatibility issue
docs(readme): update installation instructions
refactor(functions): extract helper functions
test(theme): add unit tests for template tags
قواعد Commit حرفهای
- هر Commit یک تغییر منطقی.
- پیام Commit به زمان حال و امر.
- Commit بزرگ را به چند Commit کوچک بشکنید.
- هیچوقت فایلهای حساس را Commit نکنید.
Merge و مدیریت تضاد
Merge ادغام تغییرات دو Branch است. در پروژههای وردپرسی، تضاد معمولاً در فایلهای functions.php و style.css رخ میدهد.
# مرج Branch feature به main
git checkout main
git pull origin main
git merge feature/add-checkout-field
git push origin main
حل تضاد در فایلهای وردپرسی
<<<<<<< HEAD
function my_function() {
return "version A";
}
=======
function my_function() {
return "version B";
}
>>>>>>> feature/add-checkout-field
پس از حل، فایل را ذخیره و مراحل Merge را کامل کنید.
git add functions.php
git commit -m "merge: resolve conflict in functions.php"
راهنمای چگونه تعارض گیت را بدون از دست دادن کدها حل کنیم نقطه شروع مناسبی است.
Rebase یا Merge
Rebase تاریخ را خطی میکند و Merge تاریخ را حفظ میکند. برای پروژههای تیمی، Merge ترجیح داده میشود چون تاریخچه را حفظ میکند.
Git Flow و GitHub Flow
دو استراتژی اصلی Workflow وجود دارد:
- Git Flow: مناسب پروژههای بزرگ با نسخهبندی دقیق.
- GitHub Flow: مناسب پروژههای با انتشار مکرر.
Git Flow:
- main (تولید)
- develop (توسعه)
- feature/*
- release/*
- hotfix/*
GitHub Flow:
- main (تولید)
- feature/*
برای پروژههای وردپرسی متوسط، GitHub Flow توصیه میشود.
نسخهبندی با Tag
git tag -a v1.0.0 -m "Release v1.0.0"
git push origin v1.0.0
راهنمای نسخهبندی معنایی در گیتهاب نقطه شروع مناسبی است.
Code Review و Pull Request
Pull Request ابزار اصلی Code Review در GitHub است.
# ساخت Pull Request
1. Push Branch به مخزن
2. در GitHub روی "Compare & pull request" کلیک کنید
3. توضیح تغییرات، دلیل و اسکرینشات اضافه کنید
4. Reviewer را تعیین کنید
5. پس از تایید، Merge کنید
معیارهای Code Review در وردپرس
- رعایت WordPress Coding Standards.
- Escape دادههای خروجی.
- عدم درج مستقیم کوئری.
- استفاده از هوکهای استاندارد.
- مستندسازی توابع و فایلها.
راهنمای Pull Request در GitHub راهنمای حرفهای و PHPCS برای استاندارد کد وردپرس نقطه شروع مناسبی هستند.
CODEOWNERS برای پروژه وردپرسی
# .github/CODEOWNERS
* @team-lead
/wp-content/themes/custom/ @theme-team
/wp-content/plugins/custom/ @plugin-team
استقرار با Git در وردپرس
استقرار با Git در وردپرس سه رویکرد دارد:
- Manual Deploy: Pull دستی روی سرور.
- CI/CD Deploy: استفاده از GitHub Actions.
- Deploy Scripts: اسکریپتهای سفارشی.
# GitHub Actions برای Deploy
name: Deploy to Production
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy via SSH
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USER }}
key: ${{ secrets.SSH_KEY }}
script: |
cd /var/www/html/wp-content/themes/custom
git pull origin main
wp cache flush
راهنمای GitHub Actions راهنمای خودکارسازی گردش کار و Staging Environment و محیط آزمایش نقطه شروع مناسبی هستند.
محیطهای GitHub
environment: production
environment: staging
این تنظیمات امکان تأیید دستی قبل از Deploy را فراهم میکند.
تست و پایش Git Workflow
تست Git Workflow در سه سطح انجام میشود: سطح Commit، سطح Branch و سطح Release.
# بررسی تاریخچه
git log --oneline --graph --all
# بررسی تغییرات
git diff main..feature/xyz
# بررسی وضعیت
git status
Pre-commit Hook برای پروژه وردپرسی
# .git/hooks/pre-commit
#!/bin/sh
vendor/bin/phpcs --standard=WordPress --extensions=php .
if [ $? -ne 0 ]; then
echo "PHPCS failed. Commit aborted."
exit 1
fi
اشتباهات رایج در تست
اشتباه اول، نبود تست .gitignore. اشتباه دوم، نبود تست Merge. اشتباه سوم، نبود تست Deploy. اشتباه چهارم، نبود تست Rollback. اشتباه پنجم، نبود تست با چند Branch همزمان.
پرسشهای پرتکرار درباره Git در وردپرس
آیا کل وردپرس را در Git قرار دهم؟
توصیه میشود فقط قالب و افزونه اختصاصی را در Git قرار دهید و هسته وردپرس را با Composer مدیریت کنید.
چگونه فایل wp-config.php را مدیریت کنم؟
آن را در .gitignore قرار دهید و یک نسخه نمونه مثل wp-config-sample.php بسازید.
آیا Git با SVN افزونههای وردپرس کار میکند؟
بله، اما توصیه میشود Git را انتخاب کنید.
چگونه از انتشار ناخواسته جلوگیری کنم؟
از GitHub Environments و Approved Reviewers استفاده کنید.
آیا میتوانم فایلهای Upload را در Git نگه دارم؟
توصیه نمیشود. از Git LFS برای فایلهای حجیم استفاده کنید.
آیا Git Workflow برای فریلنسر تکنفره ضروری است؟
بله، حتی برای یک نفر، امکان بازگشت و نسخهبندی ارزش بالایی دارد. راهنمای فریلنسری وردپرس را ببینید.
نتیجه و مسیر ادامه
Git ابزار اصلی مدیریت نسخه در پروژههای وردپرسی حرفهای است. کلید موفقیت، .gitignore صحیح، استراتژی Branch مناسب، پیامهای Commit استاندارد، Code Review و استقرار خودکار است. اگر این لایهها با دقت طراحی شوند، تیم در طول سالها هماهنگ و پایدار باقی میماند.
پیشنهاد میکنم مسیر یادگیری را با Staging Environment و محیط آزمایش ادامه دهید و سپس آینده فروش آنلاین و فرصتهای بینالمللی را بهعنوان رویکرد استراتژیک مطالعه کنید. همچنین مفهوم Git را در ویکیپدیا مرور کنید.
اگر روی پروژه واقعی خود Git Workflow پیاده کردهاید، برایم جالب است بدانید کدام بخش — Branch یا Code Review — بیشترین تأثیر را داشته است. تجربه خودتان را در دیدگاهها بنویسید.