صفحهٔ اصلی

از Elina
نسخهٔ تاریخ ۶ سپتامبر ۲۰۲۶، ساعت ۰۶:۰۸ توسط Elina (بحث | مشارکت‌ها)
پرش به ناوبری پرش به جستجو

مدیاویکی با موفقیت نصب شد.

برای اطلاعات بیشتر در مورد به‌کارگیری نرم‌افزار ویکی به فهرست راهنمای کاربر مراجعه کنید.

آغاز به کار

  1. Git
    1. Git چیست؟
    • Git** یک سیستم کنترل نسخه (Version Control System) است که برای مدیریت تغییرات فایل‌ها و پروژه‌ها استفاده می‌شود. Git به برنامه‌نویسان و تیم‌های توسعه کمک می‌کند تا تغییرات پروژه را ثبت کنند، به نسخه‌های قبلی برگردند و هم‌زمان روی یک پروژه کار کنند.

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

    1. Git چه کاربردی دارد؟

مهم‌ترین کاربردهای Git عبارت‌اند از:

  • ثبت تغییرات فایل‌ها و پروژه
  • مشاهده تاریخچه تغییرات
  • بازگشت به نسخه‌های قبلی
  • ایجاد شاخه‌های مختلف برای توسعه قابلیت‌های جدید
  • ادغام تغییرات چند شاخه
  • همکاری چند نفر روی یک پروژه
  • اتصال پروژه به سرویس‌هایی مانند GitHub، GitLab و Bitbucket
  • نگهداری نسخه‌های مختلف یک پروژه

---

  1. مفاهیم اصلی Git

قبل از یادگیری دستورات Git بهتر است چند مفهوم اصلی را بشناسیم.

      1. Repository

مخزن یا **Repository** محلی است که Git اطلاعات مربوط به پروژه و تاریخچه تغییرات آن را نگهداری می‌کند.

یک Repository می‌تواند روی کامپیوتر یا روی سرویس‌هایی مانند GitHub قرار داشته باشد.

      1. Commit

هر بار که مجموعه‌ای از تغییرات را در Git ثبت می‌کنیم، یک **Commit** ایجاد می‌شود.

هر Commit مانند یک نقطه در تاریخچه پروژه است و می‌توان اطلاعات تغییرات انجام‌شده را در آن مشاهده کرد.

      1. Branch
    • Branch** یا شاخه به ما اجازه می‌دهد بدون تغییر مستقیم نسخه اصلی پروژه، روی یک قابلیت یا تغییر جدید کار کنیم.

برای مثال می‌توان یک Branch برای توسعه قابلیت جدید و یک Branch برای نسخه اصلی پروژه داشت.

      1. Merge

از **Merge** برای ترکیب تغییرات یک Branch با Branch دیگر استفاده می‌شود.

      1. Remote

Remote به یک Repository که در یک محل دیگر، معمولاً روی اینترنت، قرار دارد گفته می‌شود.

برای مثال Repository موجود در GitHub می‌تواند Remote پروژه محلی ما باشد.

---

  1. دستورات پایه Git
    1. git init

برای تبدیل یک پوشه به Repository از دستور زیر استفاده می‌شود:

```bash git init ```

بعد از اجرای این دستور، Git یک پوشه مخفی با نام `.git` ایجاد می‌کند.

این پوشه اطلاعات مربوط به تاریخچه و تنظیمات Repository را نگهداری می‌کند.

---

    1. git status

برای مشاهده وضعیت فعلی پروژه استفاده می‌شود:

```bash git status ```

این دستور نشان می‌دهد:

  • چه فایل‌هایی تغییر کرده‌اند
  • چه فایل‌هایی برای Commit آماده شده‌اند
  • چه فایل‌هایی هنوز توسط Git دنبال نمی‌شوند
  • در حال حاضر روی چه Branchای قرار داریم

---

    1. git add

برای اضافه کردن تغییرات به مرحله آماده‌سازی (Staging Area) استفاده می‌شود.

برای اضافه کردن یک فایل:

```bash git add index.html ```

برای اضافه کردن چند فایل:

```bash git add index.html style.css script.js ```

برای اضافه کردن تمام تغییرات:

```bash git add . ```

---

    1. git commit

برای ثبت تغییرات آماده‌شده در تاریخچه Git استفاده می‌شود:

```bash git commit -m "Add homepage" ```

عبارت داخل `-m` توضیح کوتاهی درباره تغییرات Commit است.

بهتر است پیام Commit کوتاه، واضح و مرتبط با تغییرات باشد.

---

    1. git log

برای مشاهده تاریخچه Commitها استفاده می‌شود:

```bash git log ```

برای نمایش خلاصه‌تر:

```bash git log --oneline ```

مثلاً:

```text a83f21a Add homepage 52bc91d Fix navigation 19ac742 Initial commit ```

---

  1. کار با Branch
    1. مشاهده Branchها

برای مشاهده Branchهای موجود:

```bash git branch ```

---

    1. ایجاد Branch جدید

```bash git branch feature-login ```

در این حالت یک Branch جدید ایجاد می‌شود.

---

    1. تغییر Branch

```bash git switch feature-login ```

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

```bash git checkout feature-login ```

---

    1. ایجاد و ورود هم‌زمان به Branch

```bash git switch -c feature-login ```

این دستور یک Branch جدید ایجاد کرده و بلافاصله وارد آن می‌شود.

---

    1. حذف Branch

```bash git branch -d feature-login ```

اگر Branch هنوز Merge نشده باشد، Git ممکن است از حذف آن جلوگیری کند.

---

  1. اتصال Git به GitHub

برای اتصال Repository محلی به یک Repository روی GitHub معمولاً ابتدا Remote اضافه می‌شود:

```bash git remote add origin https://github.com/USERNAME/REPOSITORY.git ```

برای مشاهده Remoteهای موجود:

```bash git remote -v ```

---

  1. ارسال تغییرات به Remote

برای ارسال Branch به Repository آنلاین:

```bash git push origin main ```

در بسیاری از پروژه‌ها Branch اصلی با نام `main` است.

برای اینکه Branch محلی برای Pushهای بعدی به Remote متصل شود:

```bash git push -u origin main ```

پس از تنظیم اولیه، معمولاً می‌توان از:

```bash git push ```

استفاده کرد.

---

  1. دریافت تغییرات از Remote
    1. git pull

برای دریافت تغییرات جدید و ادغام آن‌ها با Branch فعلی:

```bash git pull ```

یا:

```bash git pull origin main ```

---

    1. git fetch

برای دریافت اطلاعات و تغییرات Remote بدون ادغام مستقیم آن‌ها:

```bash git fetch ```

تفاوت مهم این دو دستور این است که `fetch` تغییرات را دریافت می‌کند ولی آن‌ها را به Branch فعلی Merge نمی‌کند؛ در حالی که `pull` معمولاً دریافت و ادغام تغییرات را با هم انجام می‌دهد.

---

  1. برگرداندن تغییرات
    1. git restore

اگر فایلی را تغییر داده‌ای ولی هنوز آن را Commit نکرده‌ای، می‌توانی تغییرات آن را کنار بگذاری:

```bash git restore index.html ```

برای خارج کردن یک فایل از Staging Area:

```bash git restore --staged index.html ```

---

    1. git revert

برای ایجاد یک Commit جدید که اثر یک Commit قبلی را برعکس می‌کند:

```bash git revert COMMIT_ID ```

این روش معمولاً برای برگرداندن تغییرات در پروژه‌هایی که تاریخچه آن‌ها به اشتراک گذاشته شده مناسب‌تر است.

---

    1. git reset

`git reset` می‌تواند HEAD و وضعیت Staging را تغییر دهد.

برای مثال:

```bash git reset HEAD~1 ```

این دستور آخرین Commit را از حالت Commit خارج می‌کند، در حالی که تغییرات فایل‌ها باقی می‌مانند.

دستور `reset` به‌خصوص در حالت‌های پیشرفته باید با دقت استفاده شود.

---

  1. مشاهده تفاوت تغییرات
    1. git diff

برای مشاهده تغییراتی که هنوز Commit نشده‌اند:

```bash git diff ```

برای مشاهده تفاوت بین دو Commit:

```bash git diff COMMIT1 COMMIT2 ```

---

  1. کار با فایل‌های نادیده گرفته‌شده

گاهی نمی‌خواهیم بعضی فایل‌ها وارد Repository شوند.

برای این کار از فایل:

```text .gitignore ```

استفاده می‌شود.

برای مثال:

```gitignore node_modules/ .env

  • .log

```

در این مثال:

  • پوشه `node_modules` نادیده گرفته می‌شود.
  • فایل `.env` نادیده گرفته می‌شود.
  • فایل‌های دارای پسوند `.log` نادیده گرفته می‌شوند.

---

  1. دستورات مهم Git در یک جدول

| دستور | کاربرد | | ------------- | -------------------------------- | | `git init` | ایجاد Repository | | `git status` | مشاهده وضعیت پروژه | | `git add` | اضافه کردن تغییرات به Staging | | `git commit` | ثبت تغییرات | | `git log` | مشاهده تاریخچه | | `git branch` | مدیریت Branchها | | `git switch` | تغییر Branch | | `git merge` | ادغام Branchها | | `git remote` | مدیریت Remote | | `git clone` | کپی کردن یک Repository | | `git push` | ارسال تغییرات به Remote | | `git pull` | دریافت و ادغام تغییرات | | `git fetch` | دریافت اطلاعات Remote بدون Merge | | `git diff` | مشاهده تفاوت تغییرات | | `git restore` | برگرداندن تغییرات فایل | | `git revert` | معکوس کردن یک Commit | | `git reset` | تغییر وضعیت Commit/Stage | | `git tag` | ایجاد Tag برای نسخه‌ها |

---

  1. یک مثال عملی

فرض کنید یک سایت HTML ساخته‌ایم و می‌خواهیم آن را با Git مدیریت کنیم.

ابتدا وارد پوشه پروژه می‌شویم:

```bash cd my-website ```

سپس Repository را ایجاد می‌کنیم:

```bash git init ```

وضعیت پروژه را بررسی می‌کنیم:

```bash git status ```

فایل‌ها را به Staging اضافه می‌کنیم:

```bash git add . ```

اولین Commit را ایجاد می‌کنیم:

```bash git commit -m "Initial website" ```

حالا اگر فایل `index.html` را تغییر دهیم، می‌توانیم تغییرات را مشاهده کنیم:

```bash git diff ```

سپس تغییرات را ثبت می‌کنیم:

```bash git add index.html git commit -m "Update homepage" ```

به این ترتیب Git تاریخچه تغییرات سایت را نگهداری می‌کند.

---

  1. روند معمول کار با Git

در بسیاری از پروژه‌ها روند کار به شکل زیر است:

```text تغییر فایل‌ها

    ↓

git status

    ↓

git add

    ↓

git commit

    ↓

git push ```

اگر پروژه دارای Repository آنلاین باشد، برای دریافت تغییرات جدید معمولاً ابتدا:

```bash git pull ```

اجرا می‌شود.

---

  1. نکته مهم

Git و GitHub یکی نیستند.

    • Git** یک سیستم کنترل نسخه است که روی کامپیوتر اجرا می‌شود.
    • GitHub** یک سرویس آنلاین برای میزبانی Repositoryهای Git و همکاری روی پروژه‌هاست.

به زبان ساده:

```text Git = مدیریت نسخه‌ها GitHub = میزبانی و همکاری آنلاین ```