Git چیست؟
Git یک سیستم کنترل نسخه توزیعشده (Distributed Version Control System) است که توسط Linus Torvalds (خالق لینوکس) در سال 2005 توسعه داده شد.
هدف اصلی Git این است که توسعهدهندگان بتوانند تغییرات کد را مدیریت کنند، تاریخچهی پروژه را ذخیره کنند، و بهصورت گروهی روی یک کد کار کنند.

📜 ذخیره تاریخچه کامل پروژه
🔄 شاخهسازی (Branching) و ادغام (Merging) ساده و قدرتمند
⚡ سرعت بالا حتی در پروژههای بسیار بزرگ
🛡️ سیستم توزیعشده → هر توسعهدهنده یک کپی کامل از ریپو (Repository) دارد
✅ مدیریت بهتر در تیمهای بزرگ
Git چگونه کار میکند؟ ⚙️
Git تغییرات فایلها را بهصورت Snapshot (عکس لحظهای) ذخیره میکند، نه بهصورت تغییرات خطبهخط مثل SVN.
Working Directory → محلی که کد اصلی شماست.
Staging Area (Index) → تغییرات انتخابشده برای Commit.
Repository (Local Repo) → محل ذخیرهی Commitهای شما روی سیستم محلی.
Remote Repository → مخزن کد روی سرور (مثل GitHub یا GitLab).
# شروع پروژه جدید git init # اضافه کردن فایل به Stage git add file1.txt # ثبت تغییرات git commit -m "Added file1" # اتصال به ریپوی ریموت git remote add origin https://github.com/user/repo.git # ارسال تغییرات به سرور git push origin main
GitHub چیست؟ 🐙
GitHub یک سرویس مبتنی بر Git است که توسط Microsoft مدیریت میشود. این پلتفرم بیشتر بهعنوان یک هاست برای پروژههای کد باز و خصوصی شناخته میشود.
📦 میزبانی رایگان و پولی مخزن کد
👨👩👧 امکان همکاری تیمی (Pull Request, Issues)
✅ GitHub Actions برای CI/CD
📊 گرافیک و آمار پروژه
🌎 بزرگترین جامعه توسعهدهندگان در دنیا
شما یک Fork از پروژه ایجاد میکنید.
تغییرات خود را روی Branch جدید اعمال میکنید.
یک Pull Request به پروژه اصلی میزنید.
Maintainer پروژه تغییرات شما را بررسی و در صورت تأیید Merge میکند.
GitLab چیست؟ 🦊
GitLab هم مشابه GitHub یک پلتفرم مدیریت کد بر پایه Git است، اما ویژگیهای متفاوتی دارد.
📌 GitLab یک نرمافزار متنباز است و میتوانید آن را روی سرور خود نصب کنید.
🚀 GitLab یک DevOps Platform کامل ارائه میدهد:
Git Repository
CI/CD قوی داخلی
Issue Tracking
Container Registry
Kubernetes Integration
با فایل .gitlab-ci.yml میتوان خط لوله (Pipeline) ساخت:
stages: - build - test - deploy build_job: stage: build script: - echo "Building the project..." test_job: stage: test script: - echo "Running tests..." deploy_job: stage: deploy script: - echo "Deploying application"
سناریوی واقعی (مثال کاربردی) 🛠️
فرض کنید شما روی یک پروژه وبسایت فروشگاهی کار میکنید.
🔹 مرحله 1: مخزن Git را ایجاد میکنید و کد اصلی پروژه را Commit میکنید.
🔹 مرحله 2: تیم شما Branch جداگانه برای هر فیچر (feature/login، feature/cart) میسازد.
🔹 مرحله 3: بعد از تکمیل فیچر، Pull Request (در GitHub) یا Merge Request (در GitLab) ارسال میشود.
🔹 مرحله 4: با CI/CD تستها اجرا شده و در صورت موفقیت، کد روی سرور Production دیپلوی میشود.
جمعبندی 🎯
Git یک ابزار کنترل نسخه است.
GitHub یک سرویس هاستینگ کد با جامعه بزرگ توسعهدهندگان است.
GitLab یک پلتفرم DevOps کامل با امکان نصب روی سرور شخصی است.
🔑 اگر شما یک توسعهدهنده فردی یا استارتاپ کوچک هستید، GitHub انتخاب مناسبتری است.
🔑 اگر یک سازمان بزرگ با نیاز به کنترل کامل و CI/CD داخلی هستید، GitLab بهتر است.