امین ظاهردناک
امین ظاهردناک
خواندن ۴ دقیقه·۲ ماه پیش

چطور Git رو یه بار واسه همیشه یاد بگیریم؟

نظرتون راجب کسی که ماشینش ۵ دنده‌س ولی فکر می‌کنم ۳ دنده بیشتر نداره چیه؟ چطور از این ماشین استفاده می‌کنه؟ چقدر مجبوره آروم تر بره تو جاده؟ چقدر زمان ازش تلف می‌شه؟

یا فرض کنید ندونه برف‌پاک کن رو چطور استفاده کنه. ندونه که دکمه داره، هر سری شیشه رو می‌خواد تمیز کنه، پیاده میشه میره با یه دستمال تمیزش میکنه. یا از اون بدتر، هر بار برف‌پاک‌کن رو باز کنه و بگیره دستش و با اون شیشه رو تمیز کنه 😁

شاید بخندیم به همچین آدمی ولی خب بعضی‌وقتا خودمون تو این شرایطیم! کجاها؟ 🧐

وقتایی که از امکانات ابزاری که در اختیارمون قرار گرفته خبر نداریم و داریم اشتباه استفاده می‌کنیم!

تو مثال این راننده‌ی بنده خدا و ماشینش، مشخصه که این وضع، نتیجه‌ی بی‌خبر بودنش از امکانات ماشینشه ولی خب در عین حال همچنان هم کارش رو راه میندازه. سوال اینه که چقدر تجربه‌ی استفاده‌ش از ماشین میتونست متفاوت باشه؟ 🤔 چه کارهایی میتونست انجام بده که الان نمی‌تونه؟


اگه برنامه‌نویس هستید مثل من، احتمالا هر روز از ابزارهای خیلی زیادی استفاده می‌کنید (editor ها و IDEها، کامندلاین‌ها و برنامه‌ها و اسکریپت‌ها، سایت‌ها، نرم‌افزارها و ...). از یه طرف قاعدتا نمی‌خوایم مثل این راننده از این ابزارها استفاده کنیم، از یه طرف احتمالا داریم می‌گیم «ما مگه چقدر وقت داریم که بریم ته توی همه‌ی اینارو دراریم؟ 🤷🏻‍♂️». کاملا حق با شماست! تازه این هم هست که اینا مدام آپدیت هم میشن و تغییر می‌کنن! خب پس چی‌کار کنیم؟ 🧐

می‌شه گفت همه چیز داره تغییر می‌کنه و هر چی من یاد بگیرم چند ماه دیگه به‌درد نمی‌خوره و هیچ کاری نکرد! ما جز این دسته نیستیم! (حالا این هم بگذریم که اصول ثابتن معمولا و یه سری جزئیات هستن که تغییر می‌کنن ). بجای این کار میایم مشخص می‌کنیم چه ابزارهایی هست که برای مهم‌تر هستن و بیشتر با اون‌ها کار می‌کنیم و تمرکزمون رو می‌ذاریم رو اونا و کم کم یاد می‌گیریم که دنده‌ی ۴ و ۵ی هم هست و برف‌پاک‌کن هم از داخل اتاق فعال می‌شه 😅


اگه برنامه‌نویس هستید، به احتمالا خیلی بالا از یه VCS (سیستم کنترل نسخه) و به احتمال زیاد مثل من از Git استفاده می‌کنید. جز ابزارهایی هست که هر روز ازش استفاده می‌کنیم.

تا چند سال پیش، حسی که داشتم موقع استفاده از گیت، این بود که دارم از ۳ دنده‌ی یه ماشین ۵ دنده استفاده می‌کنم. کار رو انجام می‌دادم ولی همیشه هم میدونستم میلنگه یه جای کار. یه روزی یادم نیست چی شد که شروع کردم به مطالعه‌ی بیش‌تر راجب گیت و مقاله‌ها و ویدیوهای یوتیوب و ... یه چند هفته‌ای که گذشت، داشتم تاثیر این اطلاعات جدید رو روی استفاده‌م از گیت می‌دیدم! و اینکه چقدر راحت‌تر و مسلط‌تر دارم از گیت استفاده می‌کنم.

دیگه موقع merge conflict حس نمی‌کردم دنیا تموم شده. وقتی داشتم برنچ جدید می‌ساختم می‌دونستم دقیقا دارم چیکار می‌کنم. همینطور rebase و cherry-pick و ... خلاصه شرایط مثل کتلت از این رو به اون رو شده بود!

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


چرا دوره‌ی «گیت، یکبار برای همیشه؟»

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

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

خلاصه که این دوره از هسته‌ای ترین مفاهیم شروع می‌کنه و آجر به آجر مطالب رو روی هم می‌چینه تا کاخ دانش ما از گیت رو بسازه 😎 (مثال تبلیغاتی 😁).

یه موضوعی که دقت کردم این بود که استفاده‌ی بد از گیت، برمی‌گرده به سو برداشت از بعضی مفاهیم. فرض کنید دو تا دولوپر داریم که یکیشون فکر می‌کنه وقتی یه برنچ می‌سازه یه کپی از کل پروژه گرفته می‌شه، اون یکی میدونه که برنچ صرفا یه فایل چند کیلوبایتیه! کدومشون راحت‌تر برنچ می‌سازه و ازش استفاده می‌کنه؟ 🧐 سعی کردم با شفاف کردنِ این مدلیِ مسائل، این موضوع رو هم حل کنم.

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

هدف آموزشی من از این دوره یه چیز بوده، اینکه شما بعد از دیدن (و تمرین با!) این دوره، بتونید با خیال راحت و اعتماد به نفس از گیت تو هر پروژه‌ای استفاده بکنید!

پس این شما و این هم «گیت، یکبار برای همیشه»!

این دوره تو پلتفورم مکتب خونه منتشر شده. این هم لینکش تقدیم به شما!


یه گروه تلگرام هم زدم، اگه سوالی داشتید راجب دوره یا گیت و ...، می‌تونیم اونجا با هم در راتباط باشیم و از هم چیز یاد بگیریم.



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