صفحهٔ اصلی

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

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

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

آغاز به کار

Git Git چیست؟

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

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

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

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

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

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

Repository

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

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

Commit

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

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

Branch

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

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

Merge

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

Remote

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

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

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

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

git init

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

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

git status

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

git status

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

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

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

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

git add index.html

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

git add index.html style.css script.js

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

git add . git commit

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

git commit -m "Add homepage"

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

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

git log

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

git log

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

git log --oneline

مثلاً:

a83f21a Add homepage 52bc91d Fix navigation 19ac742 Initial commit کار با Branch مشاهده Branchها

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

git branch ایجاد Branch جدید git branch feature-login

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

تغییر Branch git switch feature-login

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

git checkout feature-login ایجاد و ورود هم‌زمان به Branch git switch -c feature-login

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

حذف Branch git branch -d feature-login

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

اتصال Git به GitHub

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

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

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

git remote -v ارسال تغییرات به Remote

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

git push origin main

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

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

git push -u origin main

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

git push

استفاده کرد.

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

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

git pull

یا:

git pull origin main git fetch

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

git fetch

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

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

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

git restore index.html

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

git restore --staged index.html git revert

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

git revert COMMIT_ID

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

git reset

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

برای مثال:

git reset HEAD~1

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

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

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

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

git diff

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

git diff COMMIT1 COMMIT2 کار با فایل‌های نادیده گرفته‌شده

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

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

.gitignore

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

برای مثال:

node_modules/ .env

  • .log

در این مثال:

پوشه node_modules نادیده گرفته می‌شود. فایل .env نادیده گرفته می‌شود. فایل‌های دارای پسوند .log نادیده گرفته می‌شوند. دستورات مهم 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 برای نسخه‌ها یک مثال عملی

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

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

cd my-website

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

git init

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

git status

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

git add .

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

git commit -m "Initial website"

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

git diff

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

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

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

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

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

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

    ↓

git status

    ↓

git add

    ↓

git commit

    ↓

git push

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

git pull

اجرا می‌شود.

نکته مهم

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

Git یک سیستم کنترل نسخه است که روی کامپیوتر اجرا می‌شود.

GitHub یک سرویس آنلاین برای میزبانی Repositoryهای Git و همکاری روی پروژه‌هاست.

به زبان ساده:

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