صفحهٔ اصلی
مدیاویکی با موفقیت نصب شد.
برای اطلاعات بیشتر در مورد بهکارگیری نرمافزار ویکی به فهرست راهنمای کاربر مراجعه کنید.
آغاز به کار
- فهرست تنظیمات پیکربندی
- پرسشهای متداول مدیاویکی
- فهرست ایمیلی نسخههای مدیاویکی
- بومیسازی مدیاویکی برای زبان شما
- چگونگی مقابله با اسپم در ویکی خودتان را یاد بگیرید
- 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 = میزبانی و همکاری آنلاین ```