برنامه‌نویسی و توسعه نرم‌افزار

آموزش Push و Pull مستقیم بین لوکال و سرور با Git (بدون GitHub)

27 اسفند 1404
25 بازدید
3 دقیقه مطالعه
م
محمد رستمی
موسس سایت
آموزش Push و Pull مستقیم بین لوکال و سرور با Git (بدون GitHub)

در بسیاری از پروژه‌ها معمولاً از GitHub یا GitLab به عنوان مخزن مرکزی برای مدیریت کد استفاده می‌کنیم. اما گاهی به دلایل مختلف مانند محدودیت اینترنت یا تحریم‌ها ممکن است دسترسی به این سرویس‌ها ممکن نباشد.

در چنین شرایطی خوشبختانه Git همچنان به خوبی کار می‌کند، چون Git اساساً یک سیستم کنترل نسخه توزیع‌شده است و وابسته به GitHub نیست.

در این مقاله یاد می‌گیریم چگونه بدون استفاده از GitHub، کدهای خود را مستقیماً از سیستم لوکال به سرور لینوکس منتقل کنیم و بین آن‌ها Push و Pull انجام دهیم.

سناریوی مسئله

فرض کنید:

  • پروژه شما روی سیستم لوکال در حال توسعه است
  • نسخه‌ای از پروژه روی سرور لینوکس اجرا می‌شود
  • دسترسی به GitHub ندارید
  • می‌خواهید تغییرات را مستقیماً از لوکال روی سرور deploy کنید

ساختار پروژه روی سرور به شکل زیر است:

/var/www/your_website

و سرور از طریق SSH روی پورت 1234در دسترس است.

مرحله اول: ایجاد یک مخزن Git مرکزی روی سرور

بهترین روش برای مدیریت کد بین چند محیط استفاده از Bare Repository است.

ابتدا وارد سرور شوید:

ssh your_user@SERVER_IP -p 1234

سپس یک مخزن git ایجاد کنید:

mkdir -p /var/git/your_website.git
 cd /var/git/your_website.git
 git init --bare

این مخزن فقط برای push و pull استفاده می‌شود و فایل اجرایی پروژه در آن قرار نمی‌گیرد.

مرحله دوم: اتصال پروژه لوکال به سرور

در سیستم لوکال وارد پوشه پروژه شوید و یک remote جدید اضافه کنید:

git remote add server ssh://your_user@SERVER_IP:1234/var/git/your_website.git

برای بررسی ریموت‌ها:

git remote -v

مرحله سوم: ارسال کد از لوکال به سرور

حالا می‌توانید کدهای خود را به سرور push کنید:

git push server main

در این مرحله تمام تغییرات از سیستم لوکال به مخزن Git روی سرور ارسال می‌شود.

مرحله چهارم: Deploy خودکار روی سرور

برای اینکه بعد از هر push پروژه روی سرور به‌روزرسانی شود، می‌توانیم از Git Hook استفاده کنیم.

روی سرور فایل زیر را ایجاد کنید:

nano /var/git/your_website.git/hooks/post-receive

و این کد را داخل آن قرار دهید:

#!/bin/bash
 GIT_WORK_TREE=/var/www/your_website git checkout -f main

سپس آن را اجرایی کنید:

chmod +x /var/git/your_website.git/hooks/post-receive

از این به بعد هر بار که push انجام دهید، پروژه در مسیر /var/www/your_websiteبه‌صورت خودکار آپدیت می‌شود.

نتیجه نهایی

حالا workflow شما به شکل زیر خواهد بود:

لوکال -> git push -> سرور -> deploy خودکار

یعنی بدون نیاز به GitHub می‌توانید:

  • کد را version control کنید
  • تغییرات را روی سرور منتشر کنید
  • پروژه را مدیریت کنید

مزایای این روش

استفاده از Git مستقیم بین لوکال و سرور چند مزیت مهم دارد:

  • عدم وابستگی به سرویس‌های خارجی
  • مناسب برای محیط‌های با اینترنت محدود
  • deploy سریع‌تر
  • کنترل کامل روی مخزن کد

جمع‌بندی

اگر دسترسی به GitHub یا GitLab ندارید، همچنان می‌توانید با استفاده از Git و SSH یک workflow کاملاً حرفه‌ای برای deploy پروژه‌ها ایجاد کنید.

با ساخت یک bare repository روی سرور و اتصال آن به پروژه لوکال، به‌راحتی می‌توانید تغییرات را push کرده و پروژه را به‌صورت خودکار روی سرور به‌روزرسانی کنید.

این روش یکی از ساده‌ترین و در عین حال قدرتمندترین راهکارها برای مدیریت کد در سرورهای لینوکسی است.

م

محمد رستمی

اشتراک‌گذاری:

نظرات کاربران (0)

هنوز نظری ثبت نشده است. اولین نفری باشید که نظر می‌دهید!