صفحهٔ اصلی: تفاوت میان نسخه‌ها

از Elina
پرش به ناوبری پرش به جستجو
بدون خلاصۀ ویرایش
برچسب: برگردانده‌شده
جایگزینی صفحه با ''''مدیاویکی با موفقیت نصب شد.''' برای اطلاعات بیشتر در مورد به‌کارگیری نرم‌افزار ویکی به [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents فهرست راهنمای کاربر] مراجعه کنید. == آغاز به کار == * [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings فهرست تنظیمات پیکربندی] * [https://www.mediaw...'
برچسب‌ها: جایگزین شد واگردانی دستی
 
(یک نسخهٔ میانیِ ایجادشده توسط همین کاربر نشان داده نشد)
خط ۹: خط ۹:
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources بومی‌سازی مدیاویکی برای زبان شما]
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources بومی‌سازی مدیاویکی برای زبان شما]
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam چگونگی مقابله با اسپم در ویکی خودتان را یاد بگیرید]
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam چگونگی مقابله با اسپم در ویکی خودتان را یاد بگیرید]
# 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 از دستور زیر استفاده می‌شود:
```bash
git init
```
بعد از اجرای این دستور، Git یک پوشه مخفی با نام `.git` ایجاد می‌کند.
این پوشه اطلاعات مربوط به تاریخچه و تنظیمات Repository را نگهداری می‌کند.
---
## git status
برای مشاهده وضعیت فعلی پروژه استفاده می‌شود:
```bash
git status
```
این دستور نشان می‌دهد:
* چه فایل‌هایی تغییر کرده‌اند
* چه فایل‌هایی برای Commit آماده شده‌اند
* چه فایل‌هایی هنوز توسط Git دنبال نمی‌شوند
* در حال حاضر روی چه Branchای قرار داریم
---
## git add
برای اضافه کردن تغییرات به مرحله آماده‌سازی (Staging Area) استفاده می‌شود.
برای اضافه کردن یک فایل:
```bash
git add index.html
```
برای اضافه کردن چند فایل:
```bash
git add index.html style.css script.js
```
برای اضافه کردن تمام تغییرات:
```bash
git add .
```
---
## git commit
برای ثبت تغییرات آماده‌شده در تاریخچه Git استفاده می‌شود:
```bash
git commit -m "Add homepage"
```
عبارت داخل `-m` توضیح کوتاهی درباره تغییرات Commit است.
بهتر است پیام Commit کوتاه، واضح و مرتبط با تغییرات باشد.
---
## git log
برای مشاهده تاریخچه Commitها استفاده می‌شود:
```bash
git log
```
برای نمایش خلاصه‌تر:
```bash
git log --oneline
```
مثلاً:
```text
a83f21a Add homepage
52bc91d Fix navigation
19ac742 Initial commit
```
---
# کار با Branch
## مشاهده Branchها
برای مشاهده Branchهای موجود:
```bash
git branch
```
---
## ایجاد Branch جدید
```bash
git branch feature-login
```
در این حالت یک Branch جدید ایجاد می‌شود.
---
## تغییر Branch
```bash
git switch feature-login
```
همچنین در نسخه‌های قدیمی‌تر Git می‌توان از دستور زیر استفاده کرد:
```bash
git checkout feature-login
```
---
## ایجاد و ورود هم‌زمان به Branch
```bash
git switch -c feature-login
```
این دستور یک Branch جدید ایجاد کرده و بلافاصله وارد آن می‌شود.
---
## حذف Branch
```bash
git branch -d feature-login
```
اگر Branch هنوز Merge نشده باشد، Git ممکن است از حذف آن جلوگیری کند.
---
# اتصال Git به GitHub
برای اتصال Repository محلی به یک Repository روی GitHub معمولاً ابتدا Remote اضافه می‌شود:
```bash
git remote add origin https://github.com/USERNAME/REPOSITORY.git
```
برای مشاهده Remoteهای موجود:
```bash
git remote -v
```
---
# ارسال تغییرات به Remote
برای ارسال Branch به Repository آنلاین:
```bash
git push origin main
```
در بسیاری از پروژه‌ها Branch اصلی با نام `main` است.
برای اینکه Branch محلی برای Pushهای بعدی به Remote متصل شود:
```bash
git push -u origin main
```
پس از تنظیم اولیه، معمولاً می‌توان از:
```bash
git push
```
استفاده کرد.
---
# دریافت تغییرات از Remote
## git pull
برای دریافت تغییرات جدید و ادغام آن‌ها با Branch فعلی:
```bash
git pull
```
یا:
```bash
git pull origin main
```
---
## git fetch
برای دریافت اطلاعات و تغییرات Remote بدون ادغام مستقیم آن‌ها:
```bash
git fetch
```
تفاوت مهم این دو دستور این است که `fetch` تغییرات را دریافت می‌کند ولی آن‌ها را به Branch فعلی Merge نمی‌کند؛ در حالی که `pull` معمولاً دریافت و ادغام تغییرات را با هم انجام می‌دهد.
---
# برگرداندن تغییرات
## git restore
اگر فایلی را تغییر داده‌ای ولی هنوز آن را Commit نکرده‌ای، می‌توانی تغییرات آن را کنار بگذاری:
```bash
git restore index.html
```
برای خارج کردن یک فایل از Staging Area:
```bash
git restore --staged index.html
```
---
## git revert
برای ایجاد یک Commit جدید که اثر یک Commit قبلی را برعکس می‌کند:
```bash
git revert COMMIT_ID
```
این روش معمولاً برای برگرداندن تغییرات در پروژه‌هایی که تاریخچه آن‌ها به اشتراک گذاشته شده مناسب‌تر است.
---
## git reset
`git reset` می‌تواند HEAD و وضعیت Staging را تغییر دهد.
برای مثال:
```bash
git reset HEAD~1
```
این دستور آخرین Commit را از حالت Commit خارج می‌کند، در حالی که تغییرات فایل‌ها باقی می‌مانند.
دستور `reset` به‌خصوص در حالت‌های پیشرفته باید با دقت استفاده شود.
---
# مشاهده تفاوت تغییرات
## git diff
برای مشاهده تغییراتی که هنوز Commit نشده‌اند:
```bash
git diff
```
برای مشاهده تفاوت بین دو Commit:
```bash
git diff COMMIT1 COMMIT2
```
---
# کار با فایل‌های نادیده گرفته‌شده
گاهی نمی‌خواهیم بعضی فایل‌ها وارد Repository شوند.
برای این کار از فایل:
```text
.gitignore
```
استفاده می‌شود.
برای مثال:
```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 مدیریت کنیم.
ابتدا وارد پوشه پروژه می‌شویم:
```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 تاریخچه تغییرات سایت را نگهداری می‌کند.
---
# روند معمول کار با Git
در بسیاری از پروژه‌ها روند کار به شکل زیر است:
```text
تغییر فایل‌ها
    ↓
git status
    ↓
git add
    ↓
git commit
    ↓
git push
```
اگر پروژه دارای Repository آنلاین باشد، برای دریافت تغییرات جدید معمولاً ابتدا:
```bash
git pull
```
اجرا می‌شود.
---
# نکته مهم
Git و GitHub یکی نیستند.
**Git** یک سیستم کنترل نسخه است که روی کامپیوتر اجرا می‌شود.
**GitHub** یک سرویس آنلاین برای میزبانی Repositoryهای Git و همکاری روی پروژه‌هاست.
به زبان ساده:
```text
Git = مدیریت نسخه‌ها
GitHub = میزبانی و همکاری آنلاین
```

نسخهٔ کنونی تا ۶ سپتامبر ۲۰۲۶، ساعت ۰۷:۴۱