جزوه آموزشی فشرده Git

مقدمه
Git یک سیستم کنترل نسخه است که برای مدیریت تغییرات کد و همکاری تیمی در پروژه‌های نرم‌افزاری استفاده می‌شود. این جزوه مفاهیم اصلی Git و دستورات کاربردی آن را به‌صورت ساده توضیح می‌دهد.

نصب و راه‌اندازی
برای شروع کار با Git، ابتدا باید آن را روی سیستم خود نصب کنید. سپس، تنظیمات اولیه مانند نام کاربری و ایمیل را انجام دهید تا هویت شما در تغییرات پروژه مشخص شود.
مثال:

sudo apt-get install git
git config –global user.name “Your Name”
git config –global user.email “your.email@example.com”

 

ایجاد و مدیریت مخزن
مخزن (Repository) فضایی است که پروژه شما و تاریخچه تغییرات آن در آن ذخیره می‌شود. می‌توانید یک مخزن جدید ایجاد کنید و فایل‌های پروژه را به آن اضافه کنید. هر تغییر مهم در پروژه با ثبت توضیحی ذخیره می‌شود.
مثال:

git init my-project
cd my-project
echo “# پروژه من” > README.md
git add README.md
git commit -m “اولین کامیت: افزودن README”

 

شاخه‌ها (Branches)
شاخه‌ها امکان کار روی نسخه‌های مختلف پروژه را فراهم می‌کنند. می‌توانید شاخه‌ای جدید برای توسعه قابلیت‌های جدید ایجاد کنید و پس از تکمیل کار، آن را با شاخه اصلی پروژه ادغام کنید.
مثال:

git branch feature
git checkout feature
git checkout -b feature
git checkout main
git merge feature

 

کار با مخازن ریموت
برای همکاری تیمی، می‌توانید پروژه خود را به یک مخزن ریموت مانند GitHub ارسال کنید. این کار امکان به اشتراک‌گذاری تغییرات با دیگران و دریافت به‌روزرسانی‌های پروژه را فراهم می‌کند.
مثال:

git remote add origin https://github.com/username/my-project.git
git push -u origin main
git pull origin main

 

مشاهده تاریخچه و تغییرات
Git به شما امکان می‌دهد تاریخچه تغییرات پروژه را بررسی کنید، وضعیت فعلی فایل‌ها را مشاهده کنید و تفاوت‌های بین نسخه‌های مختلف را ببینید.
مثال:

git log –oneline
git diff
git status

 

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


جزوه آموزشی تکمیلی Git

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

بازگرداندن تغییرات (Reset)
گاهی نیاز است تغییرات انجام‌شده را به حالت قبلی بازگردانید. می‌توانید تغییرات فایل‌های ردیابی‌شده را لغو کنید یا کامیت‌های خاصی را حذف کنید.
مثال:

git reset --soft HEAD~1

این دستور آخرین کامیت را لغو می‌کند اما تغییرات را در staging نگه می‌دارد.

git reset --hard HEAD~1

این دستور آخرین کامیت و تمام تغییرات مرتبط را کاملاً حذف می‌کند.

ذخیره موقت تغییرات (Stash)
اگر نیاز دارید تغییرات فعلی را موقتاً ذخیره کنید و به شاخه دیگری بروید، می‌توانید از stash استفاده کنید.
مثال:

git stash

تغییرات فعلی ذخیره می‌شوند و مخزن به حالت تمیز برمی‌گردد.

git stash pop

تغییرات ذخیره‌شده را بازیابی می‌کند و از لیست stash حذف می‌کند.

بازنویسی تاریخچه (Rebase)
این دستور به شما امکان می‌دهد تاریخچه کامیت‌ها را بازنویسی کنید تا خطی‌تر و تمیزتر شود. معمولاً برای مرتب‌سازی شاخه‌ها استفاده می‌شود.
مثال:

git rebase main

شاخه فعلی را روی شاخه main بازنویسی می‌کند.

git rebase -i HEAD~3

به شما امکان می‌دهد سه کامیت آخر را ویرایش، ادغام یا حذف کنید.

یافتن و رفع اشکالات (Bisect)
برای پیدا کردن کامیتی که یک خطا را ایجاد کرده، می‌توانید از ابزار bisect استفاده کنید.
مثال:

git bisect start
git bisect bad
git bisect good <commit-id>

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

git bisect reset

پس از اتمام، به حالت اولیه برمی‌گردد.

کار با تگ‌ها (Tags)
تگ‌ها برای نشانه‌گذاری نسخه‌های خاص پروژه (مثل نسخه‌های انتشار) استفاده می‌شوند.
مثال:

git tag v1.0

یک تگ سبک برای نسخه 1.0 ایجاد می‌کند.

git push origin v1.0

تگ را به مخزن ریموت ارسال می‌کند.

نتیجه‌گیری
این جزوه دستورات پیشرفته و پراستفاده Git را معرفی کرد. با تمرین این دستورات، می‌توانید مدیریت پروژه‌های خود را بهبود دهید و با چالش‌های پیچیده‌تر به‌راحتی مقابله کنید. برای یادگیری عمیق‌تر، کار با ابزارهای گرافیکی Git یا مستندات رسمی Git پیشنهاد می‌شود.

 

 

 

راهنمای ساخت و تنظیم کلید SSH برای GitHub

مقدمه
کلید SSH برای ایجاد ارتباط امن بین سیستم شما و GitHub استفاده می‌شود. این روش به شما امکان می‌دهد بدون نیاز به وارد کردن نام کاربری و رمز عبور، با مخازن GitHub کار کنید. این راهنما مراحل ساخت، تنظیم و افزودن کلید SSH به GitHub را توضیح می‌دهد.

بررسی وجود کلید SSH
ابتدا بررسی کنید که آیا کلید SSH از قبل روی سیستم شما وجود دارد یا خیر.
مثال:

ls -al ~/.ssh

این دستور فایل‌های موجود در پوشه SSH را نمایش می‌دهد. اگر فایل‌هایی مانند id_rsa یا id_ed25519 وجود داشته باشند، کلید SSH از قبل ساخته شده است.

ساخت کلید SSH جدید
اگر کلید SSH ندارید، می‌توانید یک کلید جدید ایجاد کنید.
مثال:

ssh-keygen -t ed25519 -C "your.email@example.com"

این دستور یک کلید جدید با الگوریتم ed25519 ایجاد می‌کند. ایمیل باید همان ایمیلی باشد که در GitHub استفاده می‌کنید.
اگر از سیستمی قدیمی استفاده می‌کنید که ed25519 را پشتیبانی نمی‌کند، به جای آن از این دستور استفاده کنید:

ssh-keygen -t rsa -b 4096 -C "your.email@example.com"

در هنگام پرس‌وجو، می‌توانید Enter بزنید تا مسیر پیش‌فرض (~/.ssh/id_ed25519 یا ~/.ssh/id_rsa) و بدون رمز عبور استفاده شود، یا رمز عبور دلخواهを設定 کنید.

راه‌اندازی SSH Agent
برای مدیریت کلیدهای SSH، باید SSH Agent را فعال کنید.
مثال:

eval "$(ssh-agent -s)"

این دستور SSH Agent را راه‌اندازی می‌کند. سپس کلید خود را به آن اضافه کنید:

ssh-add ~/.ssh/id_ed25519

اگر از کلید RSA استفاده کردید، به جای id_ed25519 از id_rsa استفاده کنید.

افزودن کلید عمومی به GitHub
کلید عمومی (public key) را کپی کنید و به حساب GitHub خود اضافه کنید.
مثال:

cat ~/.ssh/id_ed25519.pub

این دستور محتوای کلید عمومی را نمایش می‌دهد. آن را کپی کنید.
سپس:

  1. به وب‌سایت GitHub بروید و وارد حساب خود شوید.

  2. به بخش Settings > SSH and GPG keys بروید.

  3. روی New SSH key یا Add SSH key کلیک کنید.

  4. یک عنوان (مثلاً “My Laptop”) وارد کنید و کلید عمومی کپی‌شده را در بخش Key جای‌گذاری کنید.

  5. روی Add SSH key کلیک کنید.

تست اتصال SSH به GitHub
برای اطمینان از صحت تنظیمات، اتصال به GitHub را تست کنید.
مثال:

ssh -T git@github.com

اگر همه‌چیز درست باشد، پیامی مانند “Hi username! You’ve successfully authenticated…” دریافت خواهید کرد.

تنظیم مخزن برای استفاده از SSH
برای استفاده از SSH در مخازن GitHub، باید آدرس ریموت مخزن را به فرمت SSH تنظیم کنید.
مثال:

git remote set-url origin git@github.com:username/repository.git

این دستور آدرس ریموت را از HTTPS به SSH تغییر می‌دهد. حالا می‌توانید با دستوراتی مثل git push و git pull بدون نیاز به وارد کردن نام کاربری و رمز عبور کار کنید.

نتیجه‌گیری
با تنظیم کلید SSH، ارتباط امن و راحتی با GitHub خواهید داشت. اگر با خطایی مواجه شدید، مطمئن شوید که کلید عمومی به‌درستی در GitHub اضافه شده و SSH Agent فعال است. برای اطلاعات بیشتر، مستندات رسمی GitHub را بررسی کنید.

راهنمای کار با شاخه‌ها (Branches) در Git

مقدمه
شاخه‌ها در Git امکان کار روی نسخه‌های مختلف پروژه را فراهم می‌کنند. این قابلیت برای توسعه ویژگی‌های جدید، رفع اشکالات یا آزمایش ایده‌ها بدون تأثیر بر کد اصلی بسیار مفید است. این راهنما مراحل ایجاد، مدیریت و ادغام شاخه‌ها را توضیح می‌دهد.

ایجاد شاخه جدید
برای کار روی یک ویژگی یا تغییر خاص، می‌توانید یک شاخه جدید ایجاد کنید.
مثال:

git branch feature-name

این دستور یک شاخه جدید به نام feature-name ایجاد می‌کند، اما شما همچنان در شاخه فعلی هستید.

تغییر به شاخه دیگر
برای شروع کار در شاخه جدید، باید به آن تغییر کنید.
مثال:

git checkout feature-name

این دستور شما را به شاخه feature-name منتقل می‌کند.
همچنین می‌توانید ایجاد و تغییر به شاخه را در یک دستور ترکیب کنید:

git checkout -b feature-name

این دستور شاخه‌ای به نام feature-name ایجاد کرده و به آن تغییر می‌کند.

مشاهده شاخه‌ها
برای دیدن لیست شاخه‌های موجود و شاخه‌ای که در آن هستید:
مثال:

git branch

شاخه فعلی با علامت * مشخص می‌شود. برای اطلاعات بیشتر، از این دستور استفاده کنید:

git branch -a

این دستور همه شاخه‌ها، شامل شاخه‌های ریموت، را نمایش می‌دهد.

ادغام شاخه‌ها (Merge)
پس از اتمام کار در یک شاخه، می‌توانید تغییرات آن را با شاخه اصلی (مثلاً main) ادغام کنید.
مثال:

git checkout main
git merge feature-name

ابتدا به شاخه main تغییر کنید، سپس شاخه feature-name را در آن ادغام کنید. اگر تضاد (conflict) رخ دهد، Git شما را راهنمایی می‌کند تا آن‌ها را به‌صورت دستی رفع کنید.

حذف شاخه
پس از ادغام، می‌توانید شاخه‌ای که دیگر نیازی به آن ندارید را حذف کنید.
مثال:

git branch -d feature-name

این دستور شاخه feature-name را حذف می‌کند، به شرطی که تغییرات آن ادغام شده باشد. برای حذف شاخه‌ای که ادغام نشده است، از این دستور استفاده کنید:

git branch -D feature-name

کار با شاخه‌های ریموت
برای ارسال شاخه به مخزن ریموت (مثل GitHub) یا دریافت شاخه‌های ریموت:
مثال:

git push origin feature-name

این دستور شاخه feature-name را به مخزن ریموت ارسال می‌کند.
برای دریافت یک شاخه از ریموت:

git fetch origin
git checkout feature-name

این دستورات شاخه feature-name را از ریموت دریافت کرده و به آن تغییر می‌کنند.

رفع تضادها (Conflicts)
اگر در زمان ادغام تضاد رخ دهد، Git فایل‌های مشکل‌دار را مشخص می‌کند. می‌توانید فایل‌ها را ویرایش کرده، تضادها را رفع کنید، سپس تغییرات را اضافه و کامیت کنید.
مثال:

git add resolved-file.txt
git commit

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

نتیجه‌گیری
کار با شاخه‌ها در Git به شما امکان می‌دهد پروژه‌های خود را به‌صورت منظم و ایمن مدیریت کنید. با تمرین این دستورات، می‌توانید به‌راحتی ویژگی‌های جدید اضافه کنید یا تغییرات را آزمایش کنید. برای یادگیری بیشتر، کار با ابزارهای گرافیکی Git یا مستندات رسمی را امتحان کنید.