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

از Elina
پرش به ناوبری پرش به جستجو
بدون خلاصۀ ویرایش
برچسب: برگردانده‌شده
بدون خلاصۀ ویرایش
برچسب: برگردانده‌شده
خط ۹: خط ۹:
* [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 چیست؟


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


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


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


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


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


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


### Repository
Repository


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


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


### Commit
Commit


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


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


### Branch
Branch


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


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


### Merge
Merge


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


### Remote
Remote


Remote به یک Repository که در یک محل دیگر، معمولاً روی اینترنت، قرار دارد گفته می‌شود.
Remote به یک Repository که در یک محل دیگر، معمولاً روی اینترنت، قرار دارد گفته می‌شود.
خط ۶۴: خط ۶۰:
برای مثال Repository موجود در GitHub می‌تواند Remote پروژه محلی ما باشد.
برای مثال Repository موجود در GitHub می‌تواند Remote پروژه محلی ما باشد.


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


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


```bash
git init
git init
```


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


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


---
git status
 
## git status


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


```bash
git status
git status
```


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


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


برای اضافه کردن تغییرات به مرحله آماده‌سازی (Staging Area) استفاده می‌شود.
برای اضافه کردن تغییرات به مرحله آماده‌سازی (Staging Area) استفاده می‌شود.
خط ۱۰۵: خط ۸۹:
برای اضافه کردن یک فایل:
برای اضافه کردن یک فایل:


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


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


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


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


```bash
git add .
git add .
```
git commit
 
---
 
## git commit


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


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


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


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


---
git log
 
## git log


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


```bash
git log
git log
```


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


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


مثلاً:
مثلاً:


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


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


```bash
git branch
git branch
```
ایجاد Branch جدید
 
---
 
## ایجاد Branch جدید
 
```bash
git branch feature-login
git branch feature-login
```


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


---
تغییر Branch
 
## تغییر Branch
 
```bash
git switch feature-login
git switch feature-login
```


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


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


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


---
حذف Branch
 
## حذف Branch
 
```bash
git branch -d feature-login
git branch -d feature-login
```


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


---
اتصال Git به GitHub
 
# اتصال Git به GitHub


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


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


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


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


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


```bash
git push origin main
git push origin main
```


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


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


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


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


```bash
git push
git push
```


استفاده کرد.
استفاده کرد.


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


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


```bash
git pull
git pull
```


یا:
یا:


```bash
git pull origin main
git pull origin main
```
git fetch
 
---
 
## git fetch


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


```bash
git fetch
git fetch
```


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


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


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


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


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


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


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


```bash
git revert COMMIT_ID
git revert COMMIT_ID
```


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


---
git reset


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


برای مثال:
برای مثال:


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


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


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


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


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


```bash
git diff
git diff
```


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


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


گاهی نمی‌خواهیم بعضی فایل‌ها وارد Repository شوند.
گاهی نمی‌خواهیم بعضی فایل‌ها وارد Repository شوند.
خط ۳۵۹: خط ۲۴۱:
برای این کار از فایل:
برای این کار از فایل:


```text
.gitignore
.gitignore
```


استفاده می‌شود.
استفاده می‌شود.
خط ۳۶۷: خط ۲۴۷:
برای مثال:
برای مثال:


```gitignore
node_modules/
node_modules/
.env
.env
*.log
*.log
```


در این مثال:
در این مثال:


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


فرض کنید یک سایت HTML ساخته‌ایم و می‌خواهیم آن را با Git مدیریت کنیم.
فرض کنید یک سایت HTML ساخته‌ایم و می‌خواهیم آن را با Git مدیریت کنیم.
خط ۴۱۲: خط ۲۸۲:
ابتدا وارد پوشه پروژه می‌شویم:
ابتدا وارد پوشه پروژه می‌شویم:


```bash
cd my-website
cd my-website
```


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


```bash
git init
git init
```


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


```bash
git status
git status
```


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


```bash
git add .
git add .
```


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


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


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


```bash
git diff
git diff
```


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


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


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


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


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


```text
تغییر فایل‌ها
تغییر فایل‌ها
     ↓
     ↓
خط ۴۷۱: خط ۳۲۴:
     ↓
     ↓
git push
git push
```


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


```bash
git pull
git pull
```


اجرا می‌شود.
اجرا می‌شود.


---
نکته مهم
 
# نکته مهم


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


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


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


به زبان ساده:
به زبان ساده:


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

نسخهٔ ۶ سپتامبر ۲۰۲۶، ساعت ۰۶:۱۰

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

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

آغاز به کار

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 = میزبانی و همکاری آنلاین