آموزش گیت‌هاب GitHub به زبان ساده

همانطور که در آموزش پیشین گفته شد گیت یک سیستم کنترل نسخه‌ از پروژه شماست. ابزاری که تغییرات رو در طول زمان دنبال میکنه! شما میتونید در مخزن محلی خود از این سیستم استفاده کنید اما با این کار اشتراک‌گذاری کدهاتون با دیگران و یا همکاری تیمی در یک پروژه سخت خواهد شد. پس بنابراین نیاز به یک مخزن خارجی (remote) خواهید داشت. Github یک سرویس میزبانی برای پروژه هایی است که از Git استفاده می کنند. با استفاده از GitHub، ما میتونیم مخزن پروژه محلیمون رو در مخزن ابری خارجی GitHub  بارگذاری کنیم. ما همچنین میتونیم با مخازن عمومی منتشر شده توسط توسعه‌دهندگان دیگه تعامل داشته باشیم.

گیت‌هاب شبیه یه شبکه اجتماعی برای برنامه نویس‌های که در اون میتونن با هم تعامل داشته باشند کدهاشون رو بصورت عمومی یا خصوصی به اشتراک بگذارند و از تجربیات همدیگه استفاده کنن. گیت‌هاب هرچند توی ایران فیلتره اما یه ابزار قویه برای نشان دادن مهارت ها و تجربه به کارفرمایان یا مشتریان بالقوه! خیلی مهمه که با این فناوری آشنا باشید، به ویژه برای اون دسته از دوستانی که تازه میخوان برنامه نویسی رو شروع کنند.


توصیه می‌کنم اگر با گیت آشنایی کافی ندارید پیش از شروع این آموزش حتما مقاله قبلی رو با دقت مطالعه کنید:

1. شروع بکار با گیت‌هاب

همانطور که گفته شد گیت‌هاب یک مخزن خارجی (ریموت) در فضای ابری رو در اختیار توسعه‌دهندگان قرار میده و توسعه‌دهنده هم میتونه این مخزن روی هر کامپیوتری که خواست اصطلاحا کلون (همون دانلوده) کنه و ویژگی‌های جدید رو به اون پروژه اضافه و نهایتا تغییرات رو به مخزن خارجی ارسال کنه تا باقی اعضای تیم بتونن این تغییرات رو داشته باشند.

برای شروع کار ابتدا لازم دارید یک حساب کاربری در github بسازید، مراحل کار سادست کافیه از طریق لینک اقدام ثبت نام کنید فقط یادتون باشه یه vpn مطمئن داشته باشید! 😢

معمولا فرآیند کاری با گیت‌هاب به این صورته که ما میخوایم یک پروژه که در مخزن محلی انجام دادیم رو به یک مخزن ریموت در گیت‌هاب بفرستیم. 

من یک پروژه بسیار ساده دیگه ساختم 😊 و اون رو در مخزن محلی ذخیره کردم و حالا میخوام این پروژه رو به مخزن گیت‌هابم بفرستم:

1.1. ساخت مخزن در گیت‌هاب

بعد از ساخت اکانت در گیت‌هاب به آدرس github.com برگردید و از منوی بالا بروی علامت + کلیک کنید و از منوی ظاهر شده روی گزینه New repository انتخاب کنید:

Image for post
Image for post

در صفحه باز شده همانطور که در تصویر زیر مشاهده می‌کنید نیاز هست که یک اسم برای مخزنتون و اگر هم بخواید میتونید توضیحاتی رو وارد کنید. در این قسمت شما می‌توانید نوع خصوصی و یا عمومی بودن مخزنتون رو تعیین کنید.

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

Image for post
Image for post

در نهایت هم معمولا یک فایل markdown به نام README که توی اکثر پروژه‌ها برای توضیحات مربوط به پروژه هست رو میتونید داشته باشید. 

2.1. ارسال کد به گیت‌هاب

بعد از ایجاد مخزنتون به یک صفحه مانند صفحه زیر منتقل خواهید شد:

Image for post
Image for post

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

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

Image for post
Image for post

به همین راحتی! 

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

Image for post
Image for post

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

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

Image for post
Image for post

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

3.1. اعمال تغییرات در مخزن گیت‌هاب

خب حالا بعد از پوش کردن اولیه اگر بخوایم تغییری رو که در مخزن محلی ایجاد کردیم در مخزن ریموت هم اعمال بشه باید چیکار بکنیم. برای این منظور کافیه تغییرات در لوکال کامیت کنید و بار دیگه پوش کنید. همین!

در پروژه‌ای که من اینجا ایجاد کردم همانطور که در تصویر بالا هم مشاهده می‌کنید یک فایل .idea وجود داره که از ادیتور من میاد و من دلم نمیخواسته اون رو در مخزن ریموتم بارگذاری کنم. برای این منظور به گیت توی سیستم خودم میگم اون رو حذفش کنه داخل فایل gitignore هم اضافش میکنم و بار دیگه پوش ...

Image for post
Image for post

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

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

Image for post
Image for post

ابتدا به آدرس مخزن مورد نظر بروید و بر روی دکمه clone کلیک و از منو ظاهر شده بر روی دکمه ای که در تصویر مشخص شده کلیک کنید (البته امکان دانلود کردن مستقیم هم هست ولی ما میخوایم اینجا با گیت  اینکار رو انجام بدیم). سپس وارد دایرکتوری مورد نظرتون بشید و از طریق دستور زیر پروژه رو توی سیستم خودتون خواهید داشت.

git clone <github-repo-link>

همین کار رو برای پروژه خودمون انجام دادم نتیجه بصورت زیر شد:

Image for post
Image for post

یه نکته کوچک هم بگم اگر کلون کردن رو مشابه بالا زده باشید خواهید دید که محتویات پروژه درون یک فولدر به نام مخزن و دورن دایرکتوری مدنظر شما قرار گرفته. البته یه انتقال محتویات پروژه خیلی سخت نیست! میدونم! 😁 ولی اگر مثه من میخواید این کارو هم نکنید کافیه یه . به انتهای دستورتون اضافه کنید😉

git clone <github-repo-link> .

2. کار با شاخه‌ها در مخزن ریموت

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

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

1.2. ارسال شاخه جدید به گیت‌هاب

من در پروژه که روی آن کار میکنیم در یک شاخه جدبد یک فایل اسکریپت اضافه کردم و نهایتا بعد از کامیت کردن مجددا پوش کردم:

Image for post
Image for post

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

Image for post
Image for post

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

2.2. ارائه درخواست Pull در گیت‌هاب

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

Image for post
Image for post

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

Image for post
Image for post

3.2. pull کردن تغییرات از گیت‌هاب

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

Image for post
Image for post

3. فورک کردن پروژه‌ها در گیت‌هاب

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

بنابراین ، فورک (Fork) کپی شما از مخزنی در گیت‌هابه که متعلق به شخص دیگریست. اگر هم به دنبال مشارکت در یک پروژه هستید، میتونید درخواست‌های جدید pull از پروژه فورک ایجاد کنید تا تغییراتون رو به صاحبان مخزن اصلی ارائه بدید.

1.3. فورک یک مخزن

یک مخزن نمونه به نام Spoon-Knife وجود دارد که برای آزمایش ایجاد شده. من هم برای تست فورک در این آموزش از اون استفاده کردم. وارد صفحش بشید در قسمت بالا گزینه فروک مشاهده میشه. اگر روی اون کلیک کنید پس از اتمام فرآیند، شما به کپی مخزن پروژه Spoon-Knife منتقل میشید. این مخزن فورک به حساب GitHub شما متصل میشه و روی مخزن اصلی تأثیر نمیگذاره. 

2.3. کار کردن با یک پروژه فورک در مخزن محلی رایانه شما 

برای دریافت نسخه محلی مخزن فورک شده، فرقی با مخزن خودتون نداره. از دستور git clone استفاده کنید و هر تغییری که میخواید رو ایجاد کنید:

Image for post
Image for post

اگر به صفحه پروژه فورکتون برگردید خواهید تغیرات شما اعمال شده به همین راحتی شما هم می‌تونید پروژه‌های متن باز دیگران رو فورک کنید و کلی از دیگران یاد بگیرید و تجربه کنید!

3.3. پیشنهاد تغییرات به پروژه اصلی

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

Image for post
Image for post

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

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


همانطور که اشاره شد گیت‌هاب و ابزار گیت امروزه جزو ضروریاته و هر برنامه نویسی باید کار با این ابزار قدرتمند رو بلد باشه. توی این دو مقاله آموزشی سعی کردم تمامی اون چیزی که هر توسعه‌دهنده‌ای لازم داره به ساده‌ترین شکل ممکن ارائه کنم. چیزهای بیشتری رو میشه در مورد گیت و گیت‌هاب گفت. مثلا یه ابزاری وجود داره به اسم Gist که یه راه حل آسونه برای انتشار کدهای شما. و ظاهرا پرسپت هم پشتیباتی میکنه از این قابلیت! 👌👌 (من با این قابلیت در پرسپت حالا حالاها کار دارم منتظر مطالب آموزشی من باشید😉).

 

یا اینکه گیت‌هاب یک اپلیکیشن دستکتاپ داره که بصورت بصری کار با گیت رو کمی راحت‌تر میکنه ولی خب به نظرم نرید سمت این جور چیزا؛ اگر تصمیم داربد برنامه نویسی رو جدی پیش بگیرید و جلو برید بهتره از همین الان با ترمینال کار کنید.

برای کسب اطلاعات بیشتر در مورد گیت‌هاب و ویژگی‌های قدرتمند این ابزار، پیشنهاد میکنم داخل منابع و داک خود گیت رو بررسی کنید:

  


خب این دوره هم همینجا به اتمام رسید. اگر از آموزش لذت بردید بی‌زحمت حساب کاربری من رو @codefarm  دنبال کنید و درصورتیکه سوالی در رابطه با این آموزش بود حتما از طریق کامنتها مطرح کنید