ثبت سفارش آنلاین به‌زودی فعال می‌شود. تا آن موقع برای سفارش با ما تماس بگیرید.Online ordering is coming soon. Until then, please contact us to order.تماس با ماContact us
JolfaCLOUD

مرکز آموزش / گیت و DevOps

گیت‌هاب و گیت‌لب چیست و به چه کاری می‌آید

فرق Git با GitHub و GitLab، هدف آن‌ها، و کاربردهای واقعی: از نگهداری کد و همکاری تیمی تا CI/CD، مستندات و بکاپ نسخه‌دار کانفیگ روترها.

۱۱ دقیقه مطالعه · به‌روزرسانی آبان ۱۴۰۵

This guide is available in Persian for now. Switch to FA to read it.

اگر تا حالا فایلی به اسم config-final-v2-new-REAL.rsc داشته‌اید، مشکلی را که گیت حل می‌کند می‌شناسید. گیت‌هاب و گیت‌لب هم جایی هستند که این تاریخچه را روی اینترنت نگه می‌دارند و تیم را حولش جمع می‌کنند. این ابزارها فقط مال برنامه‌نویس‌ها نیستند؛ مدیر شبکه و تیم فنی هم خیلی از آن‌ها استفاده می‌کنند.

اول: Git چیست

Git یک نرم‌افزار کنترل نسخه است که روی کامپیوتر خودتان اجرا می‌شود. هر بار که تغییری را «ثبت» می‌کنید (commit)، گیت یک عکس از وضعیت فایل‌ها نگه می‌دارد. بعداً می‌توانید ببینید چه کسی، کی و چه چیزی را عوض کرده، دو نسخه را مقایسه کنید یا به هر نقطه‌ای از گذشته برگردید.

  • مخزن (repository): پوشه‌ای که گیت تاریخچه‌اش را نگه می‌دارد.
  • commit: یک ثبت تغییر، با پیامی که می‌گوید چه کاری شده.
  • شاخه (branch): یک مسیر جدا برای کار روی تغییرات، بدون دست زدن به نسخهٔ اصلی.
  • merge: ادغام یک شاخه با شاخهٔ اصلی.

GitHub و GitLab چیست

گیت خودش فقط روی سیستم شماست. GitHub و GitLab سرویس‌هایی‌اند که مخزن گیت را روی سرور نگه می‌دارند و ابزارهای همکاری را به آن اضافه می‌کنند: بازبینی کد، مدیریت کارها، اجرای خودکار تست و استقرار، و مستندات. یعنی Git موتور است و این‌ها خودرو و جاده.

مقایسهٔ GitHub و GitLab

GitHubGitLab
شهرتبزرگ‌ترین جامعهٔ متن‌باز دنیامحبوب در شرکت‌ها و تیم‌های DevOps
درخواست ادغامPull RequestMerge Request
اجرای خودکارGitHub ActionsGitLab CI/CD
نصب روی سرور خودتانفقط نسخهٔ سازمانی پولینسخهٔ رایگان و متن‌باز (Community Edition)
مناسب برایپروژه‌های متن‌باز، نمونه‌کار شخصی، همکاری عمومیکد داخلی شرکت، وقتی می‌خواهید همه‌چیز روی سرور خودتان باشد

گزینه‌های سبک‌تر هم هست: Gitea و Forgejo متن‌باز و بسیار سبک‌اند و روی یک سرور کوچک با چند صد مگ رم اجرا می‌شوند؛ برای تیم‌های کوچک عالی‌اند.

نکته برای کاربران ایران

دسترسی و شرایط استفاده از سرویس‌های ابری خارجی برای کاربران ایرانی در سال‌های مختلف تغییر کرده و ممکن است باز هم تغییر کند. برای کد و داده‌ای که کسب‌وکارتان به آن وابسته است، یک نسخهٔ خودمیزبان (GitLab CE، Gitea یا Forgejo روی سرور خودتان) یا دست‌کم یک نسخهٔ پشتیبان (mirror) روی سرور داخلی نگه دارید.

کاربردها

  • نگهداری کد با تاریخچهٔ کامل: هیچ تغییری گم نمی‌شود و همیشه می‌شود برگشت.
  • همکاری تیمی: هر نفر روی شاخهٔ خودش کار می‌کند و تغییر از طریق Pull/Merge Request بازبینی و بعد ادغام می‌شود.
  • مدیریت کارها (Issues): گزارش باگ، درخواست امکانات و برد کارها کنار خود کد.
  • CI/CD: با هر تغییر، تست‌ها خودکار اجرا می‌شوند و نسخهٔ جدید روی سرور مستقر می‌شود.
  • مستندات و ویکی: فایل README.md و ویکی پروژه، همراه با کد و نسخه‌دار.
  • سایت استاتیک رایگان: GitHub Pages و GitLab Pages یک سایت ساده یا مستندات را مستقیم از مخزن منتشر می‌کنند.
  • انتشار نسخه و بسته: فایل‌های نصبی (مثل APK اپ)، ایمیج داکر و بسته‌های نرم‌افزاری.
  • نمونه‌کار: پروفایل گیت‌هاب برای برنامه‌نویس حکم رزومه را دارد.

کاربرد برای مدیران شبکه

  • بکاپ نسخه‌دار کانفیگ روترها: خروجی کانفیگ هر شب در گیت ثبت شود؛ اگر کسی چیزی را عوض کرد، دقیقاً می‌بینید چه خطی و کی.
  • اسکریپت‌ها و پلی‌بوک‌ها: اسکریپت‌های bash، پایتون و Ansible در یک مخزن مشترک، نه پراکنده روی لپ‌تاپ‌ها.
  • زیرساخت به‌صورت کد: فایل‌های docker-compose، تنظیمات Nginx و فایروال با بازبینی قبل از اعمال.
  • مستندات شبکه: نقشهٔ IPها، روال‌های کاری و راهنمای رفع مشکل کنار هم و همیشه به‌روز.

شروع در پنج دستور

bash
git config --global user.name "Your Name"
git config --global user.email "you@example.ir"

git init my-project && cd my-project
echo "# My project" > README.md
git add README.md
git commit -m "First commit"

# create an empty repository on GitHub or GitLab, then:
git remote add origin https://gitlab.example.ir/team/my-project.git
git push -u origin main

کارهای روزمره هم همین سه دستور است: git add برای انتخاب تغییرها، git commit برای ثبت و git push برای فرستادن به سرور. برای گرفتن تغییرات بقیه: git pull.

نمونه: بکاپ شبانهٔ کانفیگ میکروتیک در گیت

این اسکریپت روی یک سرور لینوکس هر شب خروجی کانفیگ روترها را با SSH می‌گیرد، رمزها را می‌پوشاند و اگر تغییری بود ثبت می‌کند. احراز هویت SSH با کلید باشد، نه رمز.

bash
#!/bin/sh
# /usr/local/bin/mt-backup.sh  -  run nightly from cron
cd /srv/router-configs || exit 1
for r in 203.0.113.2 203.0.113.3; do
  ssh -o BatchMode=yes backup@"$r" "/export terse" \
    | sed -E 's/(secret|password|passphrase)=[^ ]+/\1=***/g' \
    | grep -v '^# .* by RouterOS' > "$r.rsc"
done
git add -A
git diff --cached --quiet || git commit -q -m "Config backup $(date +%F)"
git push -q
cron
0 2 * * * root /usr/local/bin/mt-backup.sh

خط اول هر خروجی میکروتیک تاریخ دارد و حذفش کردیم تا اگر کانفیگ واقعاً عوض نشده، commit خالی ساخته نشود.

نکته‌های امنیتی

  • هیچ‌وقت رمز، توکن یا کلید را commit نکنید. حتی اگر بعداً پاکش کنید، در تاریخچه می‌ماند. از فایل .env و .gitignore استفاده کنید.
  • مخزن‌هایی که اطلاعات شبکه یا مشتری دارند را خصوصی (private) نگه دارید.
  • ورود دومرحله‌ای حساب را روشن کنید و برای سرورها از کلید SSH یا توکن با دسترسی محدود استفاده کنید.
  • اگر رمزی اشتباهی commit شد، اول همان رمز را عوض کنید؛ پاک کردن از تاریخچه کار دوم است.
.gitignore
# .gitignore
.env
*.key
*.pem
secrets/
سرور یا هاست برای پروژه‌تان لازم دارید؟دیدن پلن‌های هاست

منابع

  1. کتاب رایگان Pro Git (مستندات رسمی گیت) git-scm.com/book
  2. مستندات GitHub docs.github.com
  3. مستندات GitLab docs.gitlab.com
  4. Gitea: سرویس گیت سبک و خودمیزبان about.gitea.com