27 KiB
معرفی GitHub
این درس اصول اولیه GitHub، یک پلتفرم برای میزبانی و مدیریت تغییرات کد شما را پوشش میدهد.
طراحی توسط Tomomi Imura
آزمون پیش از درس
مقدمه
در این درس، موارد زیر را پوشش خواهیم داد:
- پیگیری کارهایی که روی دستگاه خود انجام میدهید
- کار کردن روی پروژهها با دیگران
- نحوه مشارکت در نرمافزارهای متنباز
پیشنیازها
قبل از شروع، باید بررسی کنید که آیا Git نصب شده است یا خیر. در ترمینال تایپ کنید:
git --version
اگر Git نصب نشده است، Git را دانلود کنید. سپس، پروفایل محلی Git خود را در ترمینال تنظیم کنید:
git config --global user.name "your-name"git config --global user.email "your-email"
برای بررسی اینکه آیا Git قبلاً تنظیم شده است، میتوانید تایپ کنید:
git config --list
همچنین به یک حساب کاربری GitHub، یک ویرایشگر کد (مانند Visual Studio Code)، و دسترسی به ترمینال (یا: command prompt) نیاز دارید.
به github.com بروید و اگر هنوز حساب کاربری ندارید، یک حساب ایجاد کنید یا وارد شوید و پروفایل خود را تکمیل کنید.
✅ GitHub تنها مخزن کد موجود در جهان نیست؛ مخازن دیگری نیز وجود دارند، اما GitHub شناختهشدهترین است.
آمادهسازی
شما به یک پوشه با یک پروژه کد روی دستگاه محلی خود (لپتاپ یا کامپیوتر) و یک مخزن عمومی در GitHub نیاز دارید که به عنوان نمونهای برای نحوه مشارکت در پروژههای دیگران عمل کند.
مدیریت کد
فرض کنید یک پوشه محلی با یک پروژه کد دارید و میخواهید پیشرفت خود را با استفاده از Git - سیستم کنترل نسخه - پیگیری کنید. برخی افراد استفاده از Git را به نوشتن یک نامه عاشقانه برای خود آیندهتان تشبیه میکنند. با خواندن پیامهای commit خود پس از روزها، هفتهها یا ماهها، میتوانید به یاد بیاورید چرا تصمیمی گرفتهاید یا یک تغییر را "بازگردانی" کنید - البته اگر پیامهای commit خوبی بنویسید.
وظیفه: ایجاد یک مخزن و commit کردن کد
مشاهده ویدیو
-
ایجاد مخزن در GitHub. در GitHub.com، در تب مخازن یا از نوار ناوبری بالا سمت راست، دکمه مخزن جدید را پیدا کنید.
- به مخزن خود (پوشه) یک نام بدهید.
- گزینه ایجاد مخزن را انتخاب کنید.
-
به پوشه کاری خود بروید. در ترمینال، به پوشه (که به عنوان دایرکتوری نیز شناخته میشود) که میخواهید شروع به پیگیری کنید، بروید. تایپ کنید:
cd [name of your folder] -
مخزن Git را مقداردهی اولیه کنید. در پروژه خود تایپ کنید:
git init -
بررسی وضعیت. برای بررسی وضعیت مخزن خود تایپ کنید:
git statusخروجی ممکن است چیزی شبیه به این باشد:
Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: file.txt modified: file2.txtمعمولاً دستور
git statusبه شما اطلاعاتی مانند اینکه چه فایلهایی آماده ذخیره در مخزن هستند یا تغییراتی دارند که ممکن است بخواهید حفظ کنید، میدهد. -
اضافه کردن همه فایلها برای پیگیری
این مرحله همچنین به عنوان مرحلهبندی فایلها/اضافه کردن فایلها به منطقه مرحلهبندی شناخته میشود.git add .آرگومان
git addبه همراه.نشان میدهد که همه فایلها و تغییرات برای پیگیری اضافه شدهاند. -
اضافه کردن فایلهای انتخابشده برای پیگیری
git add [file or folder name]این دستور به ما کمک میکند فقط فایلهای انتخابشده را به منطقه مرحلهبندی اضافه کنیم، زمانی که نمیخواهیم همه فایلها را به یکباره commit کنیم.
-
لغو مرحلهبندی همه فایلها
git resetاین دستور به ما کمک میکند همه فایلها را به یکباره از مرحلهبندی خارج کنیم.
-
لغو مرحلهبندی یک فایل خاص
git reset [file or folder name]این دستور به ما کمک میکند فقط یک فایل خاص را به یکباره از مرحلهبندی خارج کنیم که نمیخواهیم برای commit بعدی شامل شود.
-
ذخیره کار خود. در این مرحله فایلها را به منطقهای به نام منطقه مرحلهبندی اضافه کردهاید. جایی که Git فایلهای شما را پیگیری میکند. برای دائمی کردن تغییر، باید فایلها را commit کنید. برای این کار یک commit با دستور
git commitایجاد کنید. یک commit نمایانگر یک نقطه ذخیره در تاریخچه مخزن شما است. برای ایجاد یک commit تایپ کنید:git commit -m "first commit"این دستور همه فایلهای شما را commit میکند و پیام "اولین commit" را اضافه میکند. برای پیامهای commit آینده، بهتر است توضیحات بیشتری ارائه دهید تا نوع تغییراتی که انجام دادهاید را منتقل کنید.
-
اتصال مخزن محلی Git خود به GitHub. یک مخزن Git روی دستگاه شما خوب است، اما در نهایت میخواهید یک نسخه پشتیبان از فایلهای خود در جایی داشته باشید و همچنین دیگران را دعوت کنید تا با شما روی مخزن کار کنند. یکی از مکانهای عالی برای این کار GitHub است. به یاد داشته باشید که قبلاً یک مخزن در GitHub ایجاد کردهایم، بنابراین تنها کاری که باید انجام دهیم اتصال مخزن محلی Git به GitHub است. دستور
git remote addاین کار را انجام میدهد. دستور زیر را تایپ کنید:توجه داشته باشید، قبل از تایپ دستور به صفحه مخزن GitHub خود بروید تا URL مخزن را پیدا کنید. شما از آن در دستور زیر استفاده خواهید کرد.
https://github.com/username/repository_name.gitرا با URL GitHub خود جایگزین کنید.git remote add origin https://github.com/username/repository_name.gitاین دستور یک remote یا اتصال به نام "origin" ایجاد میکند که به مخزن GitHub که قبلاً ایجاد کردهاید اشاره دارد.
-
ارسال فایلهای محلی به GitHub. تا اینجا یک اتصال بین مخزن محلی و مخزن GitHub ایجاد کردهاید. بیایید این فایلها را با دستور
git pushبه GitHub ارسال کنیم، به این صورت:توجه داشته باشید، نام شاخه شما ممکن است به طور پیشفرض متفاوت از
mainباشد.git push -u origin mainاین دستور commitهای شما را در شاخه "main" به GitHub ارسال میکند. تنظیم شاخه
upstreamشامل-uدر دستور، یک لینک بین شاخه محلی و شاخه remote ایجاد میکند، بنابراین میتوانید به سادگی از git push یا git pull بدون مشخص کردن نام شاخه در آینده استفاده کنید. Git به طور خودکار از شاخه upstream استفاده میکند و نیازی به مشخص کردن نام شاخه به طور صریح در دستورات آینده نخواهید داشت. -
اضافه کردن تغییرات بیشتر. اگر میخواهید به ایجاد تغییرات و ارسال آنها به GitHub ادامه دهید، فقط باید از سه دستور زیر استفاده کنید:
git add . git commit -m "type your commit message here" git pushنکته، ممکن است بخواهید یک فایل
.gitignoreرا اتخاذ کنید تا فایلهایی که نمیخواهید پیگیری شوند در GitHub ظاهر نشوند - مانند فایل یادداشتهایی که در همان پوشه ذخیره میکنید اما جایی در یک مخزن عمومی ندارند. میتوانید قالبهای فایل.gitignoreرا در .gitignore templates پیدا کنید.
پیامهای commit
یک خط موضوع عالی برای commit در Git جمله زیر را کامل میکند:
اگر اعمال شود، این commit <خط موضوع شما در اینجا> خواهد بود.
برای موضوع از زمان حال و حالت امری استفاده کنید: "تغییر" نه "تغییر داده شده" و نه "تغییرات".
همانطور که در موضوع، در متن (اختیاری) نیز از زمان حال و حالت امری استفاده کنید. متن باید انگیزه تغییر را شامل شود و این را با رفتار قبلی مقایسه کند. شما در حال توضیح دادن چرا هستید، نه چگونه.
✅ چند دقیقه وقت بگذارید و در GitHub جستجو کنید. آیا میتوانید یک پیام commit واقعاً عالی پیدا کنید؟ آیا میتوانید یک پیام بسیار مختصر پیدا کنید؟ به نظر شما چه اطلاعاتی مهمترین و مفیدترین برای انتقال در یک پیام commit هستند؟
وظیفه: همکاری
دلیل اصلی قرار دادن چیزها در GitHub این بود که امکان همکاری با سایر توسعهدهندگان فراهم شود.
کار کردن روی پروژهها با دیگران
مشاهده ویدیو
در مخزن خود، به Insights > Community بروید تا ببینید پروژه شما چگونه با استانداردهای جامعه توصیهشده مقایسه میشود.
در اینجا چند مورد وجود دارد که میتواند مخزن GitHub شما را بهبود بخشد:
- توضیحات. آیا توضیحی برای پروژه خود اضافه کردهاید؟
- README. آیا یک README اضافه کردهاید؟ GitHub راهنماییهایی برای نوشتن یک README ارائه میدهد.
- راهنمای مشارکت. آیا پروژه شما دارای راهنمای مشارکت است؟
- کد رفتار. آیا پروژه شما دارای کد رفتار است؟
- مجوز. شاید مهمتر از همه، یک مجوز؟
تمام این منابع به جذب اعضای جدید تیم کمک خواهند کرد. و اینها معمولاً چیزهایی هستند که مشارکتکنندگان جدید قبل از اینکه حتی به کد شما نگاه کنند، بررسی میکنند تا بفهمند آیا پروژه شما مکان مناسبی برای صرف وقت آنها است یا خیر.
✅ فایلهای README، اگرچه زمانبر هستند، اغلب توسط نگهدارندگان مشغول نادیده گرفته میشوند. آیا میتوانید نمونهای از یک README بسیار توصیفی پیدا کنید؟ توجه: برخی ابزارها برای کمک به ایجاد READMEهای خوب وجود دارند که ممکن است بخواهید امتحان کنید.
وظیفه: ادغام کد
مستندات مشارکت به افراد کمک میکند تا در پروژه مشارکت کنند. این مستندات توضیح میدهد که چه نوع مشارکتهایی مورد نظر است و فرآیند چگونه کار میکند. مشارکتکنندگان باید مراحل مختلفی را طی کنند تا بتوانند در مخزن شما در GitHub مشارکت کنند:
- فورک کردن مخزن شما. احتمالاً میخواهید افراد پروژه شما را فورک کنند. فورک کردن به معنای ایجاد یک نسخه کپی از مخزن شما در پروفایل GitHub آنها است.
- کلون کردن. از آنجا آنها پروژه را به دستگاه محلی خود کلون خواهند کرد.
- ایجاد یک شاخه. شما میخواهید از آنها بخواهید یک شاخه برای کار خود ایجاد کنند.
- تمرکز تغییرات روی یک بخش. از مشارکتکنندگان بخواهید مشارکتهای خود را روی یک چیز در یک زمان متمرکز کنند - به این ترتیب احتمال اینکه بتوانید کار آنها را ادغام کنید بیشتر است. تصور کنید آنها یک رفع اشکال بنویسند، یک ویژگی جدید اضافه کنند، و چندین تست را بهروزرسانی کنند - اگر بخواهید یا بتوانید فقط 2 از 3 یا 1 از 3 تغییر را اجرا کنید چه؟
✅ یک وضعیت را تصور کنید که شاخهها برای نوشتن و ارسال کد خوب بهویژه حیاتی هستند. چه موارد استفادهای میتوانید تصور کنید؟
توجه، تغییراتی که میخواهید در جهان ببینید باشید و برای کار خود نیز شاخه ایجاد کنید. هر commitی که انجام دهید روی شاخهای که در حال حاضر "چک شده" هستید انجام خواهد شد. از
git statusاستفاده کنید تا ببینید کدام شاخه است.
بیایید یک جریان کاری مشارکتکننده را مرور کنیم. فرض کنید مشارکتکننده قبلاً مخزن را فورک و کلون کرده است، بنابراین آنها یک مخزن Git آماده برای کار روی دستگاه محلی خود دارند:
-
ایجاد یک شاخه. از دستور
git branchبرای ایجاد یک شاخه که شامل تغییراتی است که قصد دارند مشارکت کنند، استفاده کنید:git branch [branch-name] -
تغییر به شاخه کاری. به شاخه مشخصشده تغییر دهید و دایرکتوری کاری را با
git switchبهروزرسانی کنید:git switch [branch-name] -
انجام کار. در این مرحله میخواهید تغییرات خود را اضافه کنید. فراموش نکنید که به Git اطلاع دهید با دستورات زیر:
git add . git commit -m "my changes"مطمئن شوید که به commit خود یک نام خوب بدهید، برای خودتان و همچنین نگهدارنده مخزنی که در آن کمک میکنید.
-
ترکیب کار خود با شاخه
main. در یک نقطه شما کار خود را تمام کردهاید و میخواهید کار خود را با کار شاخهmainترکیب کنید. شاخهmainممکن است در این بین تغییر کرده باشد، بنابراین مطمئن شوید که ابتدا آن را با دستورات زیر به آخرین نسخه بهروزرسانی کنید:git switch main git pullدر این مرحله میخواهید مطمئن شوید که هرگونه تعارض، موقعیتهایی که Git نمیتواند به راحتی تغییرات را ترکیب کند، در شاخه کاری شما اتفاق میافتد. بنابراین دستورات زیر را اجرا کنید:
git switch [branch_name] git merge mainدستور
git merge mainتمام تغییرات ازmainرا به شاخه شما میآورد. امیدواریم بتوانید به سادگی ادامه دهید. اگر نه، VS Code به شما میگوید که Git کجا گیج شده است و فقط فایلهای مربوطه را تغییر دهید تا بگویید کدام محتوا دقیقتر است.برای تغییر به یک شاخه دیگر، از دستور مدرن
git switchاستفاده کنید:git switch [branch_name] -
ارسال کار خود به GitHub. ارسال کار خود به GitHub به دو چیز نیاز دارد. ارسال شاخه خود به مخزن و سپس باز کردن یک PR، درخواست کشیدن.
git push --set-upstream origin [branch-name]دستور بالا شاخه را در مخزن فورکشده شما ایجاد میکند.
-
باز کردن یک PR. حالا میخواهید یک PR باز کنید. برای این کار به مخزن فورکشده در GitHub بروید. در GitHub یک اعلان خواهید دید که از شما میپرسد آیا میخواهید یک PR جدید ایجاد کنید. روی آن کلیک کنید و به صفحهای هدایت میشوید که میتوانید عنوان پیام کامیت را تغییر دهید و توضیح مناسبتری به آن اضافه کنید. حالا نگهدارنده مخزنی که فورک کردهاید این PR را میبیند و انگشتان را برای شانس خوب فشار دهید امیدواریم که از آن قدردانی کند و PR شما را ادغام کند. حالا شما یک مشارکتکننده هستید، یای :)
-
پاکسازی. بعد از اینکه یک PR را با موفقیت ادغام کردید، بهتر است که پاکسازی انجام دهید. باید هم شاخه محلی و هم شاخهای که به GitHub ارسال کردهاید را پاک کنید. ابتدا با دستور زیر آن را به صورت محلی حذف کنید:
git branch -d [branch-name]سپس به صفحه GitHub مخزن فورکشده بروید و شاخه ریموتی که به آن ارسال کردهاید را حذف کنید.
Pull request شاید اصطلاح عجیبی به نظر برسد چون در واقع شما میخواهید تغییرات خود را به پروژه ارسال کنید. اما نگهدارنده (مالک پروژه) یا تیم اصلی باید تغییرات شما را قبل از ادغام با شاخه "اصلی" پروژه بررسی کند، بنابراین در واقع شما درخواست تصمیمگیری برای تغییرات را از نگهدارنده میکنید.
یک pull request جایی است که میتوانید تفاوتهای ایجاد شده در یک شاخه را با بررسیها، نظرات، تستهای یکپارچه و موارد دیگر مقایسه و بحث کنید. یک pull request خوب تقریباً از همان قواعد پیام کامیت پیروی میکند. میتوانید به یک مشکل در ردیاب مشکلات اشاره کنید، مثلاً وقتی کار شما یک مشکل را حل میکند. این کار با استفاده از # و سپس شماره مشکل انجام میشود. برای مثال #97.
🤞انگشتان را برای شانس خوب فشار دهید که همه بررسیها موفق باشند و مالک(های) پروژه تغییرات شما را در پروژه ادغام کنند🤞
شاخه کاری محلی فعلی خود را با تمام کامیتهای جدید از شاخه ریموت مربوطه در GitHub بهروزرسانی کنید:
git pull
چگونه به منبع باز کمک کنیم
ابتدا، یک مخزن (یا repo) در GitHub پیدا کنید که برای شما جالب باشد و بخواهید تغییری در آن ایجاد کنید. شما باید محتوای آن را به دستگاه خود کپی کنید.
✅ یک راه خوب برای پیدا کردن مخازن مناسب برای مبتدیان این است که با برچسب 'good-first-issue' جستجو کنید.
روشهای مختلفی برای کپی کردن کد وجود دارد. یکی از روشها "کلون کردن" محتوای مخزن با استفاده از HTTPS، SSH یا GitHub CLI (رابط خط فرمان GitHub) است.
ترمینال خود را باز کنید و مخزن را به این صورت کلون کنید:
git clone https://github.com/ProjectURL
برای کار روی پروژه، به پوشه مناسب بروید:
cd ProjectURL
همچنین میتوانید کل پروژه را با استفاده از Codespaces، ویرایشگر کد داخلی GitHub / محیط توسعه ابری، یا GitHub Desktop باز کنید.
در نهایت، میتوانید کد را در یک پوشه زیپشده دانلود کنید.
چند نکته جالب دیگر درباره GitHub
شما میتوانید هر مخزن عمومی در GitHub را ستارهدار کنید، دنبال کنید یا "فورک" کنید. مخازن ستارهدار خود را میتوانید در منوی کشویی بالا سمت راست پیدا کنید. این شبیه به بوکمارک کردن است، اما برای کد.
پروژهها یک ردیاب مشکلات دارند، معمولاً در تب "Issues" در GitHub مگر اینکه به شکل دیگری مشخص شده باشد، جایی که افراد درباره مشکلات مربوط به پروژه بحث میکنند. و تب Pull Requests جایی است که افراد درباره تغییراتی که در حال انجام است بحث و بررسی میکنند.
پروژهها ممکن است همچنین بحثهایی در انجمنها، لیستهای ایمیل یا کانالهای چت مانند Slack، Discord یا IRC داشته باشند.
✅ به مخزن جدید GitHub خود نگاهی بیندازید و چند کار انجام دهید، مانند ویرایش تنظیمات، افزودن اطلاعات به مخزن خود و ایجاد یک پروژه (مانند یک تخته کانبان). کارهای زیادی میتوانید انجام دهید!
🚀 چالش
با یک دوست همکاری کنید و روی کد یکدیگر کار کنید. یک پروژه به صورت مشترک ایجاد کنید، کد را فورک کنید، شاخه ایجاد کنید و تغییرات را ادغام کنید.
آزمون پس از درس
مرور و مطالعه شخصی
بیشتر درباره کمک به نرمافزارهای منبع باز بخوانید.
تمرین، تمرین، تمرین. GitHub مسیرهای یادگیری عالی از طریق skills.github.com ارائه میدهد:
همچنین دورههای پیشرفتهتری نیز خواهید یافت.
تکلیف
دوره هفته اول در GitHub را کامل کنید.
سلب مسئولیت:
این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه میشود از ترجمه حرفهای انسانی استفاده کنید. ما هیچ مسئولیتی در قبال سوء تفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.



