آموزش گیتهاب GitHub به زبان ساده
همانطور که در آموزش پیشین گفته شد گیت یک سیستم کنترل نسخه از پروژه شماست. ابزاری که تغییرات رو در طول زمان دنبال میکنه! شما میتونید در مخزن محلی خود از این سیستم استفاده کنید اما با این کار اشتراکگذاری کدهاتون با دیگران و یا همکاری تیمی در یک پروژه سخت خواهد شد. پس بنابراین نیاز به یک مخزن خارجی (remote) خواهید داشت. Github یک سرویس میزبانی برای پروژه هایی است که از Git استفاده می کنند. با استفاده از GitHub، ما میتونیم مخزن پروژه محلیمون رو در مخزن ابری خارجی GitHub بارگذاری کنیم. ما همچنین میتونیم با مخازن عمومی منتشر شده توسط توسعهدهندگان دیگه تعامل داشته باشیم.
گیتهاب شبیه یه شبکه اجتماعی برای برنامه نویسهای که در اون میتونن با هم تعامل داشته باشند کدهاشون رو بصورت عمومی یا خصوصی به اشتراک بگذارند و از تجربیات همدیگه استفاده کنن. گیتهاب هرچند توی ایران فیلتره اما یه ابزار قویه برای نشان دادن مهارت ها و تجربه به کارفرمایان یا مشتریان بالقوه! خیلی مهمه که با این فناوری آشنا باشید، به ویژه برای اون دسته از دوستانی که تازه میخوان برنامه نویسی رو شروع کنند.
توصیه میکنم اگر با گیت آشنایی کافی ندارید پیش از شروع این آموزش حتما مقاله قبلی رو با دقت مطالعه کنید:
1. شروع بکار با گیتهاب
همانطور که گفته شد گیتهاب یک مخزن خارجی (ریموت) در فضای ابری رو در اختیار توسعهدهندگان قرار میده و توسعهدهنده هم میتونه این مخزن روی هر کامپیوتری که خواست اصطلاحا کلون (همون دانلوده) کنه و ویژگیهای جدید رو به اون پروژه اضافه و نهایتا تغییرات رو به مخزن خارجی ارسال کنه تا باقی اعضای تیم بتونن این تغییرات رو داشته باشند.
برای شروع کار ابتدا لازم دارید یک حساب کاربری در github بسازید، مراحل کار سادست کافیه از طریق لینک اقدام ثبت نام کنید فقط یادتون باشه یه vpn مطمئن داشته باشید! 😢
معمولا فرآیند کاری با گیتهاب به این صورته که ما میخوایم یک پروژه که در مخزن محلی انجام دادیم رو به یک مخزن ریموت در گیتهاب بفرستیم.
من یک پروژه بسیار ساده دیگه ساختم 😊 و اون رو در مخزن محلی ذخیره کردم و حالا میخوام این پروژه رو به مخزن گیتهابم بفرستم:
1.1. ساخت مخزن در گیتهاب
بعد از ساخت اکانت در گیتهاب به آدرس github.com برگردید و از منوی بالا بروی علامت + کلیک کنید و از منوی ظاهر شده روی گزینه New repository انتخاب کنید:


در صفحه باز شده همانطور که در تصویر زیر مشاهده میکنید نیاز هست که یک اسم برای مخزنتون و اگر هم بخواید میتونید توضیحاتی رو وارد کنید. در این قسمت شما میتوانید نوع خصوصی و یا عمومی بودن مخزنتون رو تعیین کنید.
اگر Public را انتخاب کنید، به این معنیه که هر کسی میتونه این مخزن جدید رو ببینه. بنابراین همیشه مطمئن باشید هنگام بارگذاری در یک مخزن عمومی، کدتون حاوی هیچ گونه اطلاعات حساسی نباشه که مایل نیستید با دیگران به اشتراک بگذارید. اگر هم Private رو انتخاب کنید، میتونید به صورت دستی انتخاب کنید که چه کسی به مخزن جدید دسترسی داشته باشه.


در نهایت هم معمولا یک فایل markdown به نام README که توی اکثر پروژهها برای توضیحات مربوط به پروژه هست رو میتونید داشته باشید.
2.1. ارسال کد به گیتهاب
بعد از ایجاد مخزنتون به یک صفحه مانند صفحه زیر منتقل خواهید شد:


همانطور که مشاهده میکنید خود گیتهاب مراحل کار رو توضیح داده. از اونجایی که ما میخوایم پروژه روی کامپیوتر خودمون رو به مخزنی خارجی که الان ساختیم ارسال کنیم لازمه که دستورالعملی که در قسمت دوم توضیح داده رو انجام بدیم.
دستور git remote add
مخزن محلی پروژمون رو به یک مخزنی خارجی متصل میکنه. در واقع شما دارید به گیت سیستم خودتون میگید که یه مخزن خارجی دیگه دارم مثلا گیتهاب با لینک فلان (همونی که در قسمت قبلی ساختیم). یه نام برای این مخزن خارجی باید انتخاب کنید که معمولا هم origin میگذارند، البته اجباری نیست شما میتونید هر اسمی دلتون خواست انتخاب کنید. اجازه بدید برای پروژه خودمون اجرا کنیم:


به همین راحتی!
حالا باید مخزن رو بفرستیم یا اصطلاحا پوش کنیم در گیتهابمون. برای این منظور از دستور git push
استفاده میکنیم. بعد از اجرا کردن این دستور گیت ازتون نام کاربری و پسورد میخواد که بعد از وارد کردن پروژتون روی گیتهاب بارگذاری خواهد شد:


توجه داشته باشید اون قسمت انتهایی کد که من در دستور پوش وارد کردم درواقع داره برای گیت مشخص میکنه در کدوم شاخه از مخزن ریموت پوش کنه! همانطور هم که در خروجی مشاهده میکنید خود گیت گفته شاخه master محلیتون داره از طریق شاخه master در مخزن ریموت گیتهابتون دنبال میشه.
خب حالا اگر برگدید به صفحه گیتهابتون و ریلود کنید خواهید دید که این صفحه با اطلاعات پروژه شما بروز شدند.


در این صفحه توسعهدهندههای دیگه میتونند کدهای شما رو ببینند. اون رو از طریق دکمه سبر رنگ دانلود کنند و در سیستم خودشون اجرا کنند و درصورتی هم که مشکل و یا حتی ایدهای داشته باشند میتونند در قسمت issues با دیگران به اشتراک بگذارند و کلی اطلاعات دیگه از نسخههای قدیمیتر و کامیتهای قبلی میتونند بدست بیارند!
3.1. اعمال تغییرات در مخزن گیتهاب
خب حالا بعد از پوش کردن اولیه اگر بخوایم تغییری رو که در مخزن محلی ایجاد کردیم در مخزن ریموت هم اعمال بشه باید چیکار بکنیم. برای این منظور کافیه تغییرات در لوکال کامیت کنید و بار دیگه پوش کنید. همین!
در پروژهای که من اینجا ایجاد کردم همانطور که در تصویر بالا هم مشاهده میکنید یک فایل .idea وجود داره که از ادیتور من میاد و من دلم نمیخواسته اون رو در مخزن ریموتم بارگذاری کنم. برای این منظور به گیت توی سیستم خودم میگم اون رو حذفش کنه داخل فایل gitignore هم اضافش میکنم و بار دیگه پوش ...


4.1. کلون کردن یک مخزن گیتهاب موجود
خب حالا نوبت اینه که یک مخزنی رو که در گیتهاب وجود داره رو دانلود کنیم و توی سیستم خودمون بتونیم روش کار کنیم. برای این من یه دایرکتوری دیگه داخل سیستمم ایجاد میکنم و همین مخزنی که ایجاد کردم رو دانلود یا اصطلاحا کلون (clone) میکنم.


ابتدا به آدرس مخزن مورد نظر بروید و بر روی دکمه clone کلیک و از منو ظاهر شده بر روی دکمه ای که در تصویر مشخص شده کلیک کنید (البته امکان دانلود کردن مستقیم هم هست ولی ما میخوایم اینجا با گیت اینکار رو انجام بدیم). سپس وارد دایرکتوری مورد نظرتون بشید و از طریق دستور زیر پروژه رو توی سیستم خودتون خواهید داشت.
git clone <github-repo-link>
همین کار رو برای پروژه خودمون انجام دادم نتیجه بصورت زیر شد:


یه نکته کوچک هم بگم اگر کلون کردن رو مشابه بالا زده باشید خواهید دید که محتویات پروژه درون یک فولدر به نام مخزن و دورن دایرکتوری مدنظر شما قرار گرفته. البته یه انتقال محتویات پروژه خیلی سخت نیست! میدونم! 😁 ولی اگر مثه من میخواید این کارو هم نکنید کافیه یه .
به انتهای دستورتون اضافه کنید😉
git clone <github-repo-link> .
2. کار با شاخهها در مخزن ریموت
قاعده کلی این هست که شاخه master همیشه باید شاخهای باشه که کد پایدار و قابل اجرا درش هست. شیوه کار در مخازن ریموت به این صورت هست که شما کدی که در حال حاضر روی آن کار میکنید و احتمالا پایدار نیست و ممکنه باگ داشته باشه رو مستقیما روی شاخه master پوش نکنید. اینکار معمولا در شاخه دیگه انجام میشه و پس از تست نهایی توسط مدیر پروژه با شاخه اصلی ادغام میشه.
بنابراین، وقتی در حال اعمال تغییرات بر روی کدها هستیم یا یک ویژگی جدید که به صورت محلی داریم توسعه انجام میدیم، معمولاً میخواهیم یک شاخه جدید برای آن ویژگی و یا آن اصلاحات در مخزن ریموت پروژه ایجاد کنیم، از اینرو مستقیماً در شاخه اصلی master، که فقط باید نسخه پایدار در آن باشد، تغییراتی ایجاد نمیکنیم.
1.2. ارسال شاخه جدید به گیتهاب
من در پروژه که روی آن کار میکنیم در یک شاخه جدبد یک فایل اسکریپت اضافه کردم و نهایتا بعد از کامیت کردن مجددا پوش کردم:


همانطور که مشاهده میکنید شاخه جدید در لوکال به مخزن گیتهابمون هم اضافه شد. اگر صفحه مربوط به پروژه ریلود کنیم میبینیم که شاخه جدید پوش شده:


بعد از اینکه شما شاخه خودتون رو ایجاد کردید برای اینکه باقی اعضای تیم متوجه تغییرات شما بشن لازمه که درخواست خودتون رو پیشنهاد کنید که اصطلاحا میگن pull بشه.
2.2. ارائه درخواست Pull در گیتهاب
همانطور که در تصویر فوق هم مشاهده میکنید میتونید با کلیک بروی دکمه compare & pull request
درخواست خودتون رو وارد کنید. پس از کلیک وارد صفحهای میشید که در اون باید یک عنوان و توضیحاتی که لازم هست رو در فرم درخواست وارد کنید. در ادامه این صفحه لیستی از تغییراتی که شما وارد کردید بصورت خط به خط قابل مشاهدست:


در نهایت بعدا از ارسال درخواست فوق، باقی اعضای تیم میتونن تفییرات شما بررسی کنند و درمورد درخواست شما نظرشون رو در همین صفحه درخواست ارسال کنند و آخر سر مدیر تیم توسعه (کسی که مخزن رو ایجاد کرده یا دسترسی ادغام شاخه ها رو داره) شاخه شما رو در شاخه اصلی قرار میده.


3.2. pull کردن تغییرات از گیتهاب
معمولا اتفاق میوفته که در کارهای تیمی پس از ایجاد تغییرات یا ادغام شاخه ها از طریق درخواستهای pull در گیتهاب، مخزن ریموت با مخزن محلی رایانه شما متفاوت باشه. که در اینصورت برای دریافت آخرین تغییرات از مخزن گیتهاب از دستور git pull
استفاده میکنیم.


3. فورک کردن پروژهها در گیتهاب
گیتهاب در حال حاضر تعداد بسیار زیادی پروژه عمومی و خصوصی میزبانی میکنه. این امکان وجود داره که اگر شما بخواهید بتوانید از مخزن شخص دیگری به عنوان نقطه شروع برای پروژه خودتون استفاده کنید. یا شاید بخواید به توسعه یک پروژه منبع باز دیگه ملحق بشید و به اون تیم کمک کنید که البته میتونه یه تجربه مفید و یه رزومه کاری عالی برای شما محسوب بشه!
بنابراین ، فورک (Fork) کپی شما از مخزنی در گیتهابه که متعلق به شخص دیگریست. اگر هم به دنبال مشارکت در یک پروژه هستید، میتونید درخواستهای جدید pull از پروژه فورک ایجاد کنید تا تغییراتون رو به صاحبان مخزن اصلی ارائه بدید.
1.3. فورک یک مخزن
یک مخزن نمونه به نام Spoon-Knife وجود دارد که برای آزمایش ایجاد شده. من هم برای تست فورک در این آموزش از اون استفاده کردم. وارد صفحش بشید در قسمت بالا گزینه فروک مشاهده میشه. اگر روی اون کلیک کنید پس از اتمام فرآیند، شما به کپی مخزن پروژه Spoon-Knife منتقل میشید. این مخزن فورک به حساب GitHub شما متصل میشه و روی مخزن اصلی تأثیر نمیگذاره.
2.3. کار کردن با یک پروژه فورک در مخزن محلی رایانه شما
برای دریافت نسخه محلی مخزن فورک شده، فرقی با مخزن خودتون نداره. از دستور git clone
استفاده کنید و هر تغییری که میخواید رو ایجاد کنید:


اگر به صفحه پروژه فورکتون برگردید خواهید تغیرات شما اعمال شده به همین راحتی شما هم میتونید پروژههای متن باز دیگران رو فورک کنید و کلی از دیگران یاد بگیرید و تجربه کنید!
3.3. پیشنهاد تغییرات به پروژه اصلی
پس از تغییراتی که در کدها اعمال کردید، شما میتونید یک درخواست pull برای صاحب پروژه اصلی که فورک کردید بفرست و با این کار به به پروژه اولیه کمک کنید. ارسال درخواست فرایند مشابهی داره کافی از مخزن فورک شده در گیتهاب خودتون یک درخواست pull بزنید:


با زدن این دکمه وارد صفحهای میشید که در اون فرم ارسال درخواست خواهید شد که در آنجا ضمن وارد کردن توضیحات درخواستتون رو به صاحب پروژه اصلی ارسال میکنید.
در شرایطی که میخواهید در پروژه توسعهدهنده دیگری که نمیشناسید مشارکت داشته باشید، ارائه توصیف دقیق و مفصل از همه کارهایی که انجام دادید خیلی مهمه. بر اساس همین توضیحاته که صاحب پروژه اصلی میتواند تصمیم بگیرد که آیا می خواهد تغییرات شما را در پروژه خود پیاده کند یا خیر.
همانطور که اشاره شد گیتهاب و ابزار گیت امروزه جزو ضروریاته و هر برنامه نویسی باید کار با این ابزار قدرتمند رو بلد باشه. توی این دو مقاله آموزشی سعی کردم تمامی اون چیزی که هر توسعهدهندهای لازم داره به سادهترین شکل ممکن ارائه کنم. چیزهای بیشتری رو میشه در مورد گیت و گیتهاب گفت. مثلا یه ابزاری وجود داره به اسم Gist که یه راه حل آسونه برای انتشار کدهای شما. و ظاهرا پرسپت هم پشتیباتی میکنه از این قابلیت! 👌👌 (من با این قابلیت در پرسپت حالا حالاها کار دارم منتظر مطالب آموزشی من باشید😉).
یا اینکه گیتهاب یک اپلیکیشن دستکتاپ داره که بصورت بصری کار با گیت رو کمی راحتتر میکنه ولی خب به نظرم نرید سمت این جور چیزا؛ اگر تصمیم داربد برنامه نویسی رو جدی پیش بگیرید و جلو برید بهتره از همین الان با ترمینال کار کنید.
برای کسب اطلاعات بیشتر در مورد گیتهاب و ویژگیهای قدرتمند این ابزار، پیشنهاد میکنم داخل منابع و داک خود گیت رو بررسی کنید:
خب این دوره هم همینجا به اتمام رسید. اگر از آموزش لذت بردید بیزحمت حساب کاربری من رو @codefarm دنبال کنید و درصورتیکه سوالی در رابطه با این آموزش بود حتما از طریق کامنتها مطرح کنید