دنیای برنامه نویسی، به طور حیرتانگیزی وسیع و گسترده است و به لطف پیشرفت فناوری و همینطور کاربرد بسیار زیاد رشته علوم کامپیوتر در حوزههای دیگر، تعجبآور نیست که بسیاری از مسائلِ موجود در زمینههای گوناگون را، میتوان با کد نویسی و ساخت نرمافزارهای مورد نیاز، حل کرد. با این حال، پرسشی که مطرح میشود این است که «بهترین راه برای نمایش و ارائه پروژه برنامه نویسی و توسعه نرم افزار چیست». برخلاف سایر حوزهها، ارائه مقالهای تحقیقاتی یا پستِ وبلاگی، ممکن است برای شرح فعالیتهایی که در فرایند برنامه نویسیِ یک پروژه صورت گرفته است و همینطور ویژگیهایِ برنامه ساخته شده، کافی نباشد. بنابراین، نیاز به ابزاری پیشرفتهتر برای مدیریت نسخهها و سازماندهی پروژه وجود دارد. گیت هاب در واقع برای این منظور مطرح میشود. در این مطلب از مجله تم آف در پاسخ به این پرسش که «گیت هاب چیست»، این ابزار بسیار مفید را برای ارائه پروژهها معرفی میکنیم.
در پاسخ به این سوال که «گیت هاب چیست»، به طور خلاصه میتوان گفت که «گیت هاب» سیستمی برای کنترل نسخه به شمار میرود. مفهوم «سیستم کنترل نسخه» و همچنین دیگر موارد مرتبط را در ادامه، بررسی خواهیم کرد.
مقدمات یادگیری گیت هاب چیست؟
در این بخش به بررسی برخی از مفاهیم و عناوین مقدماتی در رابطه با موضوع گیت هاب، از جمله مفهوم «سیستمهای کنترل نسخه» پرداختهایم، که مطالعه آن، اطلاعات مفیدی را در اختیار شما قرار میدهد.
سیستم کنترل نسخه چیست؟
«سیستم کنترل نسخه» (Version Control System)، ابزاری است که به توسعهدهندگان، در مدیریت تغییرات ایجاد شده روی فایلها و دایرکتوریها (پروندهها و پوشهها) کمک میکند. سیستمهای کنترل نسخه متعددی وجود دارند که یکی از آنها «گیت» (Git) نام دارد.
«کنترل نسخه» که با نام «کنترل منبع» (Source Control) نیز شناخته میشود، به منظور نگهداری نسخههای متعدد سورس کد به کار برده میشود. به عبارت دیگر، این سیستم به منظور ردیابی تغییراتی مورد استفاده قرار میگیرد که در طول زمان، روی کدهای منبع ایجاد شده است.
کاربرد سیستم کنترل نسخه به همین مورد خلاصه نمیشود و امکان مشارکت و همکاری برنامهنویسان با یکدیگر، استقرار سورس کد از کامپیوترهای محلی به «سرورهای مرحلهبندی» (Staging Server)، سپس به «سرورهای ارزیابی» (Testing Server) و در نهایت به «محیط تولید» را فراهم میکند. سیستم کنترل نسخه، ابزاری یکپارچه است که به ما امکان میدهد تا کدهایمان را در فضای ابری نیز مستقر کنیم.
لازم به ذکر است که سرورهای «مرحلهبندی»، برای آزمایش ایمن برنامهها، در محیطی شبیه به محیط تولید، استفاده میشوند و به کشف مشکلات نرمافزاری قبل از انتشار محصول، کمک میکنند.
کاربردهای سیستم کنترل نسخه چیست؟
«کنترل نسخه»، امکاناتی را در اختیار برنامهنویس قرار میدهد که به کمک آن روند توسعه نرمافزار سادهتر میشود. در ادامه، این موارد را فهرست کردهایم.
- پشتیبانگیری: همزمان با پیشرفت پروژه، کارهای صورت گرفته را ذخیره میکنیم.
- نگهداری سابقه: نسخه فعلی پروژه را با نسخهای دلخواه (که قبلاً ساختهایم)، مقایسه میکنیم.
- مشاهده تغییرات: تغییراتی را که در پروژه رخ داده است به طور دقیق و خط به خط دنبال میکنیم.
- مشارکت: «کنترل نسخه»، به کاربران متعدد اجازه میدهد تا به طور همزمان روی پروژهای خاص، مشارکت و همکاری داشته باشند و این کار با پرهیز از تداخلهای ممکن، مانند بازنویسی تصادفی کار یکی از کاربران روی کار مربوط به کاربر دیگر، صورت میگیرد.
مزیت های سیستم کنترل نسخه چیست؟
استفاده از کنترل نسخه در توسعه وب، مزایای زیادی را به دنبال دارد که در ادامه برخی از آنها را مرور میکنیم.
- دادهای از دست نمیرود (گُم نمیشود). نحوه ذخیره داده در Git، به گونهای است که هرگز از بین نمیرود.
- بازگشت به هر بخش از سابقه موجود، آسان است. Git تاریخچه تغییرات را ذخیره میکند و این امکان را در اختیار کاربر قرار میدهد تا به نسخه دلخواه برگردد.
- پرهیز از بازنویسی را آسانتر میکند. Git به طور خودکار زمانی که کار شما با کار دیگری در تضاد است، به شما اطلاع میدهد.
- تغییر ابعاد کار، آسان شده است. Git با همگامسازی کاری که تیمها انجام دادهاند، مقیاسپذیری پروژه را آسانتر میکند.
چه کسانی از کنترل نسخه استفاده میکنند؟
سیستم کنترل نسخه، میتواند به وسیله افرادی به کار برده شود که در ادامه فهرست شدهاند.
- تیمهای DevOps
- تیمهای توسعه نرمافزار
- تیمهای مهندسی
- تیمهای علم داده
- سایر افراد متخصص در زمینه فناوری
انواع سیستم های کنترل نسخه کدامند؟
سیستمهای کنترل نسخه، ۲ دسته «متمرکز» (Centralized) و «توزیعشده» (Distributed) را شامل میشوند.
سیستم کنترل نسخه متمرکز چیست؟
در «سیستمهای کنترل نسخه متمرکز» (Centralized Version Control Systems | CVCS)، تمام محتویات پروژه، در سرور مرکزی ذخیره میشود. هر کاربر کد را از «مخزن اصلی» (Master Repository) یا سرور دریافت و تغییرات صورت گرفته روی آن را به نسخه مرکزی ارسال میکند. بنابراین برای ثبت هر تغییر، نیاز داریم تا به سرور متصل شویم. یادگیری «کنترل نسخه متمرکز» از «کنترل نسخه توزیع شده» آسانتر است.
کنترل نسخه توزیع شده چیست؟
ساز و کار «سیستم کنترل نسخه توزیع شده» (Distributed Version Control Systems | DVCS)، مشابه مکانیزمهای کنترل نسخه متمرکز است. بزرگترین تفاوتی که میتوان میان این ۲ قائل شد، این است که در نوع متمرکز، به جای مخزن واحدی که روی سرور قرار دارد، در اینجا هر یک از برنامهنویسان، نسخهای «کپی» از کل سابقه را در کامپیوتر محلی خود نگهداری میکنند.
سیستم کنترل نسخه توزیع شده در مقابلِ نوعِ متمرکز آن، پیچیدهتر است و سرعت بسیار بیشتری دارد. همچنین، علاوه بر اینکه به عملکرد شبکه متکی نیستند، امکان دسترسی آفلاین را نیز فراهم میکنند.
گیت چیست؟
علیرغم آن چیزی که از زندگی برنامهنویسان در فیلمها نمایش داده میشود و تصوری که عموم افراد از توسعهدهندگان دارند و آنها را افرادی منزوی و به دور از زندگی اجتماعی میپندارند، زندگی اجتماعی و همکاری (مشارکت) در این دسته از افراد، نقش بسزایی دارد. اتفاقاً گیت و گیت هاب به عنوان ابزاری در همین رابطه و برای مشارکت بین برنامهنویسان، مورد استفاده قرار میگیرند.
گیت، «سیستم کنترل نسخه توزیع شدهای» آزاد و اوپن سورس است که تغییرات صورت گرفته را در هر مجموعهای از فایلهای کامپیوتری، دنبال میکند. از کاربردهای گیت میتوان به ایجاد هماهنگی بین برنامهنویسانی اشاره کرد که روی سورس کدی مشترک کار میکنند و به صورت مشارکتی روند توسعه پروژه را پیش میبرند. از اهداف گیت میتوان به سرعت زیاد، یکپارچگی دادهها و سایر موارد اشاره کرد.
گیت به وسیله آقای «لینوس توروالدز» در سال ۱۳۸۴ (۲۰۰۵ میلادی) به منظور توسعه هسته لینوکس نوشته شد. البته دیگر توسعهدهندگان هسته نیز در توسعه و خلق نسخه اولیه آن سهیم بودند. این سیستم تحت مجوز «جیپیاِل ۲» به اشتراک گذشته شده است و توسط آقای «جونیو هامانو» نگهداری میشود. در ادامه به طور خلاصه برخی از اصطلاحات موجود در گیت را با هم مرور خواهیم کرد.
ریپازیتوری Repository یا مخزن چیست؟
«ریپو»، «ریپازیتوری» (Repository) یا «مخزن» (Repository)، به مجموعهای از فایلها و پوشهها گفته میشود که قرار است با «گیت»، آنها را ردیابی کنیم. به بیان دیگر میتوان گفت که ریپازیتوری، تاریخچه تغییراتی را نگهداری میکند که توسط اعضای تیم روی پروژه اعمال شده است.
گیت هاب چه نوع ابزاری است؟
گیت هاب، یکی از محبوبترین راهکارهای ذخیرهسازی از راه دور برای مخازن گیت محسوب میشود. همچنین به ما امکان تنظیم مجوزهای دسترسی برای پروژهها، پیگیری و ارسال باگها، مشترک شدن در اعلانهای مخزن، استفاده از رابطی گرافیکی به جای خطِ فرمان و سایر موارد را میدهد. در حالت عادی، مخازن به صورت «عمومی» (Public) منتشر میشوند، اما با پرداخت هزینهای میتوانیم مخازن «خصوصی» (Private) نیز داشته باشیم.
منظور از Commit یا کامیت کردن در گیت چیست؟
اصطلاح «کامیت» یا «تثبیت» (Commit) به فرایند ذخیره تغییرات انجام شده در پروژه اشاره دارد. توجه داشته باشید که کامیتها تا زمانیکه به مخزنِ راه دور «ارسال» (Push) نشوند، روی سیستم محلی قرار دارند.
منظور از push در گیت چیست؟
عمل «push» در حقیقت، تکمیل کننده عمل «Commit» محسوب میشود. میتوان گفت که «Pushing» برای همگامسازی کامیتهای ما با بستر ابری (یا همان گیت هاب) صورت میگیرد. میتوانیم کامیتهای متعددی را به اصطلاح Push کنیم.
منظور از Branch در گیت چیست؟
اگر مخزن گیت را به صورت درخت در نظر بگیریم، تنه درخت «Master Branch» در نظر گرفته میشود. به شاخههای این درخت نیز «Branch» میگوییم. شاخهها در حقیقت، نمونههای جداگانهای از کدها هستند که از کد اصلی منشعب شدهاند.
علت ایجاد شاخه، ممکن است افزودن ویژگی جدید به پروژه یا برای مقاصد آزمایشی باشد. با این کار، یکپارچگی پروژه حفظ میشود و در صورت بروز خرابکاری، راهی برای بازگشت به حالت قبلی وجود دارد. همچنین این امکان را برای ما فراهم میکنند تا بدون ایجاد مزاحمت در کار اعضای دیگر تیم (یا بالعکس)، کار خودمان را پیش ببریم.
منظور از Merge در گیت چیست؟
وقتی که شاخه مورد نظر تکمیل شد (توسعه مورد نظر صورت گرفت و باگهای آن تا حد امکان برطرف شد) و آماده شد تا تبدیل به جزئی از کدهای اصلی پروژه باشد، میتوانیم آن را در «شاخه اصلی» (Master Branch)، ادغام (Merge) کنیم. «ادغام» چیزی نیست جز یکی کردن (یکپارچه کردن) ۲ شاخه با یکدیگر، به این ترتیب که کدهای جدید یا بهروز شده ما، به بخشی رسمی از پایگاه کدهای اصلی تبدیل میشوند و هر کسی که از نقطه ادغام به بعد، شاخهای ایجاد کند، کدهای ما هم جزئی از آن خواهند بود.
منظور از Clone در گیت چیست؟
عمل کلون کردن یا «کپی» (Cloning) مخزن، کل مخزن آنلاین را میگیرد و یک کپی دقیق از آن را در دستگاه محلیمان ایجاد میکند. دلایل زیادی برای این کار وجود دارد که مهمترین آنها میتواند شامل شروع پروژه از مخزن معیوب، تعویض ایستگاههای کاری یا شروع در میانهی پروژه با تیمی جدید باشد.
منظور از Fork در گیت چیست؟
عمل «منشعب شدن» (Forking)، شباهت زیادی به کلون کردن دارد با این تفاوت که به جای ایجاد رونوشتی از مخزن موجود روی سیستم محلی، مخزن کاملاً جدیدی از آن کد به نام خود دریافت میکنیم. این ویژگی، عمدتاً برای دریافت کدهای پروژهای موجود و طی کردن مسیری جدید در توسعه آن است که این گونه مورد استفاده قرار میگیرد، فرایندی که در نرمافزارهای اوپن سورس به وفور شاهد آن هستیم.
توسعهدهندگان ایده نو و کارکرد آن را مشاهده میکنند، سپس تصمیم میگیرند که راه دیگری را با آن پیش ببرند. چند شاخه شدن یا منشعب شدن، ما را به این هدف میرساند. همچنین میتوانیم برای ادغام تغییرات انجام شده توسط ما، در مخزن اصلی نیز، «درخواست Pull» یا (Pull Request) ایجاد کنیم.
در رابطه با مفاهیمی که در بالا تعریف شدند، در ادامه این مطلب، توضیحات بیشتری ارائه خواهد شد.
گیت هاب چیست ؟
«گیت هاب» (GitHub)، ابزای آنلاین است که خدمات مربوط به «کنترل منبع» (Source Control) را برای ما فراهم میکند. «نرمافزار کنترل منبع» عموماً به منظور مدیریت تغییراتِ کدهایمان مورد استفاده قرار میگیرد تا مطمئن شویم که اطلاعات مربوط به موارد تغییر یافته و هچنین زمان و علت آن، ثبت میشوند.
به این ترتیب، بعد از مدتی (مثلاً چند ماه بعد)، در صورتی که به مشکلی بر بخوریم یا باگی پیدا شد، ویژگی سابقه تغییرات یا «Version History» به ما کمک میکند تا بتوانیم بفهمیم که چه مشکلی رخ داده است. بزرگترین مزیت این ویژگی، زمانی است که در حال «کدنویسی مشارکتی» (Collaborative Code-writing) هستیم. نرمافزار کنترل منبع در نهایت به تمام اعضای تیمِ توسعه کمک میکند تا کدهای یکدیگر را درک کنند و همچنین، تغییرات صورت گرفته توسط یکدیگر را ببینند.
گیت هاب، اصطلاحات فنی گستردهای را پوشش میدهد، که برای کاربران جدید، یا کسانی که اصول گیت را نمیدانند، اما میخواهند مهارت خود را در این زمینه گسترش دهند، میتواند مبهم باشد. بنابراین، در ادامه این مطلب به شرح اصطلاحات رایج و مفاهیم موجود در گیت و گیت هاب میپردازیم. لازم به ذکر است که در این مطلب، از ابزار VSCode استفاده میکنیم.
نصب گیت و گیت هاب در ویژوال استودیو کد چگونه است؟
اولین قدم برای استفاده از گیت هاب با ویژوال استودیو کد، این است که «Git» را روی کامپیوتر خود راهاندازی، سپس آن را در ویژوال استودیو کد، فعال کنیم. در این قسمت از مطلب «گیت هاب چیست»، مراحل نصب و راهاندازی گیت و گیت هاب در ویژوال استودیو کد، را با هم مرور خواهیم کرد. این بخش شامل عناوینی است که در ادامه آمده است و هریک از آنها را مورد بررسی قرار دادهایم.
- مروری بر GitHub ،Git و VSCode
- نصب Git روی سیستم
- فعالسازی Git در VS Code
- ایجاد حساب در GitHub
- پیکربندی ورود به گیت هاب
مروری بر GitHub ،Git و VSCode
«ویژوال استودیو کد» (Visual Studio Code) که به اختصار «VSCode» نامیده میشود، ویرایشگر کدی برای توسعه، اجرا و دیباگ کدهای برنامه به شمار میرود. «گیت» (GIT)، ابزاری است که امکان ایجاد مخزن محلی (روی کامپیوتر خود) و مدیریت نسخههای فایلهایمان را فراهم میکند.
«گیت هاب» (GitHub)، نیز سرویسی آنلاین است که به عنوان میزبانی برای مخازن گیت ما (در فضای ابری) محسوب میشود. بنابر مستندات رسمی ویژوال استودیو، لازم است قبل از اینکه بتوانید به گیت از داخل ویژوال استودیو کد دسترسی داشته باشید، Git را روی سیستم خود نصب کنیم.
نصب Git روی کامپیوتر چگونه است؟
برای فهمیدن این مورد که آیا گیت قبلاً روی سیستم ما نصب شده است یا خیر، میتوانیم به خطِ فرمان (در ویندوز) یا ترمینال (در مَک) برویم و دستور مربوطه را به نحوی تایپ کنیم که در ادامه آمده است.
$ git --version
git version 2.20.1.windows.1
در صورت عدم نمایش نتیجه فوق (نصب نبودن گیت روی سیستم)، کافی است به سایت «Git-SCM» برویم و فایل اجرایی گیت را با توجه به سیستم خود (سیستمعاملهای ویندوز، مَک، لینوکس/یونیکس) دانلود و نصب کنیم.
فعال سازی Git در VS Code چگونه است؟
برای فعالسازی گیت در ویژوال استودیو کد روی سیستم عامل ویندوز، لازم است تا طبق مراحلی که در ادامه آمده، پیش برویم.
- از منوی «File» روی گزینه «Preferences» کلیک میکنیم.
- به قسمت «Settings» میرویم.
- عبارت Git: Enabled
را در نوار جستجو تایپ میکنیم.
- مطمئن میشویم که تیک کنار آن زده شده است.
همچنین، برای فعالسازی گیت در سیستم عامل «مَک»، گامهایی که در ادامه آمده است را انجام میدهیم.
- از منوی «Code» روی گزینه «Preferences» کلیک میکنیم.
- به قسمت «Settings» میرویم.
- عبارت Git: Enabled
را در نوار جستجو تایپ میکنیم.
- مطمئن میشویم که تیک کنار آن زده شده است.
ایجاد حساب در GitHub و ورود به آن چگونه است؟
برای ایجاد حساب کاربری روی گیت هاب، کافی است به سایت GitHub.com برویم و با وارد کردن اطلاعات خواسته شده، حساب کاربری مخصوص به خود را ایجاد کنیم.
پیکربندی ورود به گیت هاب چگونه است؟
حالا، زمان آن رسیده است تا آدرس ایمیل مربوط به «Commit» خود را در Git راهاندازی کنیم. برای پیکربندی «ورود به سیستم Git»، باید «نام کاربری» (Username) و آدرس ایمیل خود را در Git تنظیم کنیم. برای انجام این کار، ترمینال را باز و نام کاربری را در Git، به صورتی وارد میکنیم که در ادامه آمده است.
git config --global user.name "yourusername"
همچنین برای تنظیم آدرس ایمیل، دستوری که در ادامه آمده است را برای ایمیل خود تایپ میکنیم.
git config --global user.email "email@youremail.com"
مخزن در گیت هاب چیست؟
«مخزن» (Repository) روی گیت هاب را میتوان پوشهای در نظر گرفت که به ما در سازماندهی پروژه کمک میکند. مخزن، تمام فایلها و نسخههای مربوط به پروژهمان را در بر میگیرد. در این قسمت از مطلب «گیت هاب چیست»، نحوه ایجاد مخزن روی گیت هاب را با هم مرور خواهیم کرد.
نحوه ساخت مخزن از طریق گیت هاب چگونه است؟
برای ایجاد مخزن جدید در گیت هاب لازم است تا مراحلی که در ادامه آمده را انجام دهیم. ابتدا، گزینه «Start a project» را انتخاب یا اینکه گزینه «New Repository» را در سمت راست و بالای صفحه کلیک میکنیم.
سپس، لازم است تا نامی را برای مخزن خود انتخاب کنیم. بهتر است نام انتخابی، واضح باشد تا هم به خاطر سپردن آن آسان باشد و هم توضیحی را برای کاربرد مخزن ارائه دهد. این کار ما را از سردرگمی هنگام افزایش تعداد مخزنها و کار روی چندین پروژه، نجات میدهد. در صورت لزوم، میتوانیم مخزن را به حالت «خصوصی» (Private) درآوریم.
پس از آن میبایست مخزنی که ساختیم را با ایجاد فایل README
، راهاندازی کنیم. با افزودن این فایل، میتوانیم اطلاعاتی را در مورد پروژه، به آن اضافه کنیم. حالا تنها کاری که باقی مانده این است که روی گزینه «Create Repository» کلیک کنیم.
همانطور که در ادامه نشان داده شده است، توانستیم با موفقیت، اولین مخزن یا «repo» را در گیت هاب بسازیم.
در ادامه، خلاصه مراحل ساخت مخزن روی گیت هاب آورده شده است.
- روی «New repository»، در بالا و سمت راست صفحه، کلیک میکنیم.
- نامی را برای مخزن انتخاب میکنیم.
- مخزن را با فایل README
راهاندازی میکنیم.
- بر روی «Create repository» کلیک میکنیم.
برگه تقلب ویژوال استودیو کد برای گیت هاب چیست ؟
در ادامه، مواردی مربوط به گیت هاب عنوان شده است که میتوانید از آنها در بخش «Commands» ،«Terminal» یا «Source Control Panel» مربوط به ویژوال استودیو کد استفاده کنید. توضیحات لازم برای نحوه ورود به هر یک از بخشهای مذکور نیز بیان شده است.
- برای دسترسی به بخش «Commands»، میتوانیم از کلیدهای ترکیبی Ctrl + Shift + P
(در ویندوز) یا Command + Shift + P
(برای کاربران Mac) استفاده کنیم.
- برای باز کردن پنجره ترمینال، میبایست از منوی «Terminal»، گزینه «New Terminal» را انتخاب کنیم.
- پنل سورس کنترل را میتوانیم از نوار سمت چپ ویژوال استودیو کد یا از طریق فشردن کلیدهای ترکیبی Control + Shift + G
، باز کنیم.
ایجاد مخزن گیت هاب در ویژوال استودیو کد | از دکمه «Publish to GitHub» استفاده میکنیم. |
Clone کردن مخزن گیت هاب در ویژوال استودیو کد | دستور Git: Clone
را به کار میبریم. |
Clone کردن مخزن گیت هاب از ترمینال | از دستور git clone استفاده میکنیم. |
انتقال مخزن گیت از ترمینال | دستور git push را به کار میبریم. |
انتقال مخزن گیت از Source Control | «Commit» ،«Stage» را انجام میدهیم و گزینه «Push» را از منوی «Push, Pull» انتخاب میکنیم. |
شاخه در گیت هاب چیست؟
شعبه یا «شاخه» (Branch)، نسخهای منشعب شده از مخزنی است (از پروژه اصلی) که روی آن کار میکنیم. این ویژگیِ مهم و ضروری، در اکثر «سیستمهای کنترل نسخه» (Version Control Systems) فعلی وجود دارد.
پروژه گیت، میتواند بیش از یک شاخه داشته باشد و عملیات متعددی از جمله تغییر نام، فهرستکردن، حذف و غیره را میتوانیم روی آنها انجام دهیم. این شاخهها، اشارهگری به اسنپشاتِ تغییرات صورت گرفته به وسیله ما، محسوب میشوند. هنگامیکه میخواهیم یک ویژگی جدید اضافه کنیم یا اینکه باگی را در پروژه برطرف کنیم، شاخهای جدید ایجاد میکنیم.
شاخه اصلی در گیت چیست ؟
«شاخه اصلی» (Master Branch)، شاخه پیشفرض در گیت است که با انجام اولین «تثبیت» (Commit) در پروژه، ایجاد میشود. همه تغییرات در نهایت در این شاخه ادغام میشوند و میتوان آن را به عنوان نسخه رسمی پروژه در نظر گرفت.
عملیات مربوط به شاخه ها در گیت چیست ؟
ما میتوانیم عملیات گوناگونی را روی شاخههای گیت اِعمال کنیم. دستور git branch
به ما امکانِ ایجاد، فهرستبندی، تغییر نام و حذف شاخهها را میدهد و همچنین، ارتباط نزدیکی با دستورات git checkout
و git merge
دارد. لازم به ذکر است که هر کدام از این دستورات کاربرد خاص خود را دارند و در ادامه مورد بررسی قرار میگیرند.
دستور git branch در گیت چیست؟
نحوه نوشتن این دستور، به شکلی است که در ادامه آمده است.
$ git branch
دستور git branch
، شاخهای به نام
دستور list branch در گیت چیست؟
با استفاده از این دستور میتوانیم تمام شاخههای موجود در مخزن خود را فهرست کنیم. نحوه استفاده از این دستور به صورت git branch – list
یا git branch
است.
$ git branch --list
$ git branch
هر دوی این دستورات، شاخههای موجود در مخزن را فهرست میکنند. علامت «*» موجود در کنار نام شاخه، بیانگر «فعال» (Active) بودن شاخه است.
دستور delete branch در گیت چیست؟
اگر بخواهیم شاخهای مشخص را حذف کنیم از این دستور استفاده میکنیم. عملیاتی که این دستور انجام میدهد، اصطلاحاً ایمن است. یعنی این دستور در گیت، از حذف شاخهای که تغییرات ادغام نشده دارد، جلوگیری میکند. نحوه استفاده از این دستور، در ادامه آمده است.
$ git branch -d
مثال فوق، شاخه «B1» موجود را از مخزن ما حذف میکند. خروجی آن نیز به صورتی که در ادامه آمده است، نمایش داده میشود.
دستور git branch d
به ۲ شکل قابل استفاده است. فرمت دیگری که این دستور دارد، git branch D
است. دستور «git branch D» نیز برای حذف شاخهای مشخص، استفاده میشود.
$ git branch -D
دستور switch branch در گیت چیست؟
گیت این امکان را در اختیار ما قرار میدهد تا بدون انجام کامیت، بین شاخهها جابجا شویم. این کار با استفاده از دستور git checkout
انجام میشود و با آن میتوانیم بین دو شاخه جابجا شویم. نحوه استفاده از این دستور در ادامه آمده است.
$ git checkout
بنابراین میتوانیم بدون انجام هیچ گونه کامیتی، از شاخه «اصلی» (Master) به هر شاخه دیگری که مایل باشیم (و در مخزن ما موجود باشد) منتقل شویم. اگر بخواهیم از هر شاخهای که هستیم به شاخه اصلی منتقل شویم. دستوری که در ادامه آمده است، در این رابطه به ما کمک میکند.
$ git branch -m master
دستور rename branch در گیت چیست؟
با استفاده از دستور git branch
میتوانیم نام شاخه مورد نظر را تغییر دهیم. برای تغییر نام یک شاخه، به صورتی که در ادامه آمده است عمل میکنیم.
$ git branch -m
در ادامه، مثالی بیان شده است که نام شاخهای با نام «branch4» را به «renamedB1» تغییر میدهد.
دستور merge branch در گیت چیست؟
یکی از امکاناتی که گیت در اختیار ما قرار میدهد این است که میتوانیم شاخهای را با شاخه فعال فعلی ادغام یا Merge کنیم و به این ترتیب ۲ شاخه موجود را به صورت یکپارچه در آوریم. نحوه استفاده از این دستور در ادامه آمده است.
$ git merge
در ادامه، مثالی بیان شده است که با به کار گیری دستور فوق، شاخه اصلی را با شاخهای به نام «renamedB1» ادغام میکند. از آنجایی که، قبل از «ادغام»، هیچ کامیتی انجام ندادهایم، بنابراین خروجی به صورت «Already up to date» نشان داده میشود.
روش ایجاد شاخه در مخزن گیت هاب چیست ؟
همانطور که گفته شد، Branchها، محیطهایی مجازی هستند که میتوانیم تغییراتی را روی آنها، بدون اینکه بر روی سایر شاخهها تاثیر بگذارند (در داخل یک کانتینر) اِعمال کنیم. برای ایجاد شاخهها روی گیت هاب یا حذف شاخهها از آن، کار سختی در پیش نداریم. برای ایجاد شاخهای جدید روی گیت هاب، کافی است تا طبق مراحلی جلو برویم که در ادامه شرح داده شدهاند.
در مخزن گیت هابی که متعلق به ما است، میتوانیم وقتی در زبانه «Code» هستیم، در سمت چپ و بالا، روی لیست کشویی مربوط به شاخهها کلیک کنیم. پس از آن، میبایست گزینه «View all branches»، به منظور نمایش همه شاخهها، انتخاب شود.
در پنجره باز شده، روی دکمه «New branch» کلیک میکنیم.
پس از آن، نامی دلخواه را برای شاخه، انتخاب و بر روی فهرست کشویی «Branch source» کلیک میکنیم.
اگر مخزن ما یک انشعاب «Fork» باشد، این «Fork» یا مخزن اصلی را به عنوان «منبع شاخه» (branch source) انتخاب میکنیم.
در مرحله بعد، «توضیحی» (Comment) نمایش داده میشود با این مضمون که «شعبه مورد نظر به زودی ایجاد خواهد شد».
حالا اگر به زبانه «Code» برگردیم، خواهیم دید که شاخه جدید، به درستی ایجاد شده است.
روش حذف شاخه در مخزن گیت هاب چیست ؟
برای این منظور دوباره به صفحه اصلی مخزن خود (زبانه Code) بر میگردیم. از لیست کشویی، روی دکمه «View all branches» کلیک میکنیم.
حالا کافی است تا روی آیکن سطل زباله مربوط به شاخهای کلیک کنیم که قصد حذف آن را داریم.
سپس اگر به زبانه main مخزنمان برگردیم، خواهیم دید که شاخه مورد نظر حذف شده است و دیگر در فهرست کشویی نمایش داده نمیشود.
اگر بخواهیم شاخهای را که از روی گیت هاب حذف کردیم، مجدداً بازیابی کنیم، تنها کاری که باید انجام دهیم این است که در منوی کشویی شاخهها، گزینه «View all branches» را انتخاب کنیم.
پس از آن، با کلیک روی دکمه «Restore» موجود در کنار شاخه مورد نظر، به راحتی میتوانیم آن را بازیابی کنیم.
Pull در گیت هاب چیست ؟
در این قسمت از مطلب «گیت هاب چیست»، یاد میگیریم که چگونه درخواست «واکشی» (Pull) سادهای را در گیت هاب ایجاد کنیم. برای اینکه توضیحات مربوط به این قسمت کاملتر باشد، در کنار حساب کاربری خود در گیت هاب، حساب دیگری (حساب دومی) را هم باز کردیم.
در حساب کاربری دوم، مخزنی به نام تست (Test Repository) وجود دارد که قصد داریم تغییراتی را روی آن ایجاد کنیم. بنابراین لازم است تا یک «درخواست Pull» یا «Pull Request» انجام دهیم.
درخواست pull در گیت هاب چیست؟
«درخواست واکشی» (Pull Request) که با عنوان «درخواست ادغام» (Merge Request) نیز شناخته میشود، درخواستی است که برای مطلع ساختن صاحب مخزن از تغییراتی استفاده میشود که به مخزن «ارسال» (pushed) شده است تا آنها بتوانند تغییرات را بررسی (بازبینی) کنند و تغییرات را به مخزن pull کنند. مفهوم «درخواست Pull» در ادامه آمده است.
- انشعابی است که از یک مخزن ایجاد میکنیم.
- تغییراتی که روی آن صورت میگیرد.
- درخواستی که برای واکشی، به صاحب مخزن ارسال میشود.
- درخواست Pull که توسط دارنده مخزن تایید میشود.
پس از ارسال «درخواست Pull»، دارنده (صاحب) مخزن، Pull Request را بررسی میکند. برای اینکه بفهمیم پس از ارسال «درخواست pull»، چه اتفاقی میافتد، اجازه دهید به حساب GitHub دوم و به مخزن تست برگردیم. در اکانت دوم (در نقش دارنده مخزن که درخواست pull را دریافت کرده)، میخواهیم «درخواست pull» را ادغام کنیم.
اکنون که در حساب دوم هستیم، عددی کنار زبانه «Pull requests» نشان داده میشود که بیانگر دریافت تعداد درخواستهای pull دریافتی (به عنوان مثال از سمت حساب اول) است.
در صورتی که روی آن کلیلک کنیم، جزئیات درخواست را هم میتوانیم مشاهده کنیم.
به عنوان مالک، روی ردیف «درخواست pull»، کلیک میکنیم تا آن را بررسی کنیم.
در اینجا دارنده میتواند کامیتها را بررسی کند تا ببیند آیا بررسی یا «چکهای ناموفق» (Failed Checks) وجود دارد یا خیر و همچنین تغییر ایجاد شده را ببیند.
دارنده مخزن یا «مشارکتکننده» (Contributor)، پس از بررسی میتواند درخواست دریافتی را تأیید کند.
در زبانه «Write» ، توضیحی مبنی بر تایید را خواهید دید. اکنون، میتوانید با کلیک کردن بر روی «merge pull request» درخواستی برای ادغام واکشی ایجاد کنید.
در آخرین مرحله، کافی است تا ادغام را تایید کنیم.
در حال حاضر، دارنده مخزن، درخواست «Pull» ارسالی توسط ما را پذیرفته و عمل ادغام را انجام داده است. به زبانه «Code» در مخزن بر میگردیم، اکنون میتوانیم ببینیم که «مخزن تست» (Test Repository)، تغییرات ایجاد شده را شامل میشود.
چگونه به گیت هاب Commit کنیم؟
اکنون که اولین فایل خود در ویژوال استدیو کد را ایجاد کردیم، میخواهیم اولین «Commit» خود به گیت هاب را انجام دهیم. همچنین آن را اصطلاحاً به گیت هاب «Push» کنیم.
اگر مفهوم «Commit» کردن را هنوز به درستی درک نکردید، نگران نباشید. تنها لازم است تا مواردی که در ادامه آورده شده است را انجام دهید.
- تغییرات صورت گرفته در فایل را ذخیره کنیم.
- به شاخه «اصلی» (Master)، «Commit» میکنیم.
- به گیت هاب «Push» میکنیم.
در ادامه، به توضیح هر یک از موارد بالا، میپردازیم.
ذخیره کردن تغییرات چگونه انجام میشود؟
اولین قدم این است که فایل .gitignore
ایجاد شده را ذخیره کنیم. برای این منظور، میتوانیم از کلیدهای ترکیبی CTRL + S
(روی ویندوز)، یا Command + S
(روی Mac) استفاده کنید یا اینکه از منوی «File» گزینه «Save» را انتخاب کنید.
کامیت کردن تغییرات چگونه انجام میشود؟
در قدم دوم، در پنل سورس کنترل، روی آیکون «بررسی» (علامت تیک) کلیک میکنیم.
این کار، تغییرات انجام شده را به فایل «master» کامیت میکند. با انجام این کار، تغییراتی که در فایل «اصلی» (Master) خود ایجاد کردیم، «Commit» میشود. بهتر است تا پیامی را درج کنیم تا در آینده بدانیم که این «Commit» به چه منظوری انجام شده است.
push در گیت هاب چیست ؟
پیشتر گفتیم که، اصطلاح «Push کردن» در گیت هاب، به نحوه انتقال Commitها از «مخزن» (Repository) محلی به مخزنِ راهِ دور اشاره میکند.
«ویژوال استدیو کُد» (Visual Studio Code | VSCode)، ابزاری مخصوص برنامهنویسی و به طور کلی یک «ویرایشگر کد» (Code Editor) محسوب میشود. این محصولِ مایکروسافت، محیطی را برای ما (توسعهدهندگان) فراهم میکند تا در آن کدهایمان را بنویسیم و اجرا یا دیباگ کنیم. همچنین ویژگیهای دیگری نظیر «برجستهسازی نحو» (Syntax Highlighting)، تکمیل کدها (Code Completion) و ويژگیهای مخصوص «Commit» را نیز ارائه میدهد.
در این بخش قرار است تا نحوه ساخت، «تکثیر» (Clone) و کار با مخازن گیت هاب در ویژوال استدیو کد، آشنا شویم. از آنجایی که در این پروژه قرار است نحوه Push کردن در گیت هاب را به وسیله VSCode آموزش دهیم، نیاز است ویژوال استدیو کد بر روی سیستم نصب باشد. برای این منظور میتوان آخرین نسخه آن را از سایت رسمیویژوال استدیو دریافت و نصب کرد.
ویژوال استدیو کد، گزینهای با عنوان «Publish to GitHub»، برای ساخت مخازنی روی گیت هاب دارد، برای زمانی که مخزن گیت از قبل موجود نیست. بری انتشار از ویژوال استدیو کد به گیت هاب، لازم است تا پروژه خود را «به صورت محلی» (Locally) بسازیم و فایل README.md
را به آن اضافه کنیم. پس از آن، کلیدهای ترکیبی Ctrl + Shift + P
روی ویندوز، یا Command + Shift + P
(برای کاربران Mac) را میفشاریم.
در مرحله بعد، لازم است تا «خصوصی» (Private) یا «عمومی» (Public) بودن مخزن را مشخص کنیم.
از «پنل کنترل منبع» (Source Control Panel)، «Stage» و «Commit» مربوط به تغییرات را انجام میدهیم.
پس از «Push» کردن و انتشار تغییرات (Publish)، مخزن ایجاد شده VSCode، میبایست روی «GitHub» موجود باشد.
چگونه Commit را به گیت هاب Push کنیم؟
قدم سوم، این است که Commit را به گیت هاب Push کنیم. برای این کار، کافی است تا روی علامت «۳ نقطه» (…) کلیک و گزینه «Push» را انتخاب کنیم.
پس از انجام این کار به مخزن گیت هاب بر میگردیم. حال، خواهیم دید که فایل .gitignore
، به گیت هاب «Push» شده است و پیامی که برای «Commit» در نظر گرفتیم، درست در کنار آن نمایش داده شده است.
همانطور که میبینید، به دلیل افزودن فایل .gitignore
، فایل README.md
در کامیت اولیه باقی مانده و فایل فضایِ کاری، به گیت هاب «Push» نشده است.
نحوه Push کردن کدها به گیت هاب با VSCode چگونه است؟
برای «Push» کردن کدهایمان در گیت هاب با استفاده از ویژوال استدیو کد، میتوانیم از «ویژگی داخلیِ کنترل سورس کد» (built-in Source Control feature)، استفاده کنیم. برای این منظور، ابتدا، یک مخزن گیت را در پوشه محلی پروژه راهاندازی میکنیم. سپس، با انتخاب آیکن «Source Control» در سمت چپ پنجره VS Code، تغییرات صورت گرفته روی فایلهایمان را در نمای Source Control میبینیم.
پس از اینکه توضیحی برای «Commit» وارد کردیم، با کلیک روی علامت «تیک»، تغییراتمان «Commit» میشود. در مرحله بعد، از منوی ۳ نقطه، گزینه «Push» را انتخاب میکنیم تا تغییرات صورت گرفته را به مخزن گیت هاب راه دور خود منتقل کنیم. در این مرحله، ممکن است نیاز به احراز هویت با حساب گیت هاب داشته باشیم (اگر پیش از این انجام نشده باشد). با انجام این مراحل، تغییرات ایجاد شده، باید در مخزن گیت هاب ما قابل مشاهده باشد.
Fork در گیت هاب چیست ؟
در این قسمت میخواهیم مفهوم فورک کردن یا منشعب شدن یا «چند شاخه شدن» (Forking) را با هم یاد بگیریم. «Fork» کردن مخزن، به این معنی است که یک کپی از مخزن روی سرویس میزبانی گیت (مانند گیت هاب، Gitlab و Bitbucket)، بدون ایجاد پیوندی به آن بسازیم.
هر کسی میتواند یک مخزن عمومی را فورک کند. هنگام فورک کردن، در حقیقت یک کپی مستقل و جدید از مخزن مورد نظر (مشابه نسخه اصلی) ایجاد میکنیم. هنگامی که مخزنی را «Fork» میکنیم، کنترل کاملی بر آن خواهیم داشت. یعنی میتوانیم آن را «Clone» یا تغییرات انجام شده در «Fork» را «Commit» و «Push» کنیم. با این حال این اجازه را نداریم تا بدون «درخواست ادغام» (Merge Request) به مخزن اصلی «Commit» کنیم.
عمل Forking اغلب برای اجرای تستها، بدون اینکه خطر تأثیرگذاری بر مخزن اصلی وجود داشته باشد یا هنگام همکاری (مشارکت) با یک پروژه «منبع آزاد» (Open-Source) استفاده میشود. تغییرات صورت گرفته در «Fork» با استفاده از درخواستهای واکشی (Pull Requests) ارسال میشود.
Fork کردن مخزن چگونه است؟
اولین قدم برای ایجاد یک درخواست کشش، Fork کردن مخزن است. فورک، یک کپی از یک مخزن است که به ما امکان میدهد بدون تأثیر بر روی مخزن اصلی، تغییراتی را ازنمونهای از آن ایجاد کنیم. درخواست واکشی برای ارسال تغییرات ایجاد شده در فورک استفاده میشود تا بتوانند مخزن اصلی را تغییر دهند (اصلاح کنند). برای fork کردن یک مخزن، روی «Fork» در سمت راست و بالای مخزنی که میخواهید تغییراتی در آن ایجاد کنید، کلیک کنید.
حالا روی دکمه سبز رنگ «Create Fork» کلیک میکنیم.
تا این مرحله، همانطور که مشاهده میکنید، یک «انشعاب» (Fork) ایجاد کردیم و اصطلاحاٌ دارنده آن انشعاب محسوب میشویم.
کامیت کردن تغییر در fork چگونه است؟
به منظور Commit کردن تغییرات صورت گرفته در Fork، میبایست مخزن کلون شده را در ویژوال استودیو کد باز کنیم. این مخزن، مانند تصویری که در ادامه آمده است، میبایست کاملا در زیر ریشه باشد.
پس از آن، فایل README.md را اصلاح و آن را ذخیره میکنیم.
با مراجعه به زبانه «Source Control» در ویژوال استودیو کد، میتوانیم مطمئن شویم که تغییر ما برای «committ» آماده است. روی علامت «+» کلیک میکنیم تا تغییرات، مرحلهبندی اصطلاحاً «استیج» (Stage Changes) شوند.
پس از افزودن توضیحی برای کامیت، روی دکمه «Commit» کلیک میکنیم.
حالا بر روی گزینه «…»، کلیک و گزینه «Push» را انتخاب میکنیم.
در این مرحله، ضمن توجه به تصویری که در ادامه آمده است، با رفرش کردن مخزن اصلی (در سمت چپ) و مخزن فورک شده (در سمت راست)، میتوانیم شاهد باشیم که تغییر ما به فورک منتقل (Pushed) شده است.
پس از ایجاد تغییرات در Fork، میتوانیم با ایجاد یک «درخواست واکشی» (Pull Request) در گیت هاب، صاحب مخزن اصلی را مطلع کنیم تا تغییرات صورت گرفته را یکپارچه یا «ادغام» (Merge) کند. برای این منظور میبایست در مخزن فورک شده گیت هاب، زبانه «Pull Requests» را انتخاب کنیم.
سپس، بر روی دکمه سبز رنگ «New pull request» کلیک میکنیم.
در صفحه بعدی، امکان مقایسه تغییرات ایجاد شده در «Fork» نسبت به مخزن اصلی، فراهم شده است. در صورتی که مشکلی وجود نداشته باشد، باید پیامِ تیک خورده «Able to Merge» (قابل ادغام بودن) را ببینیم. در پایین صفحه، علائم «+»، تغییرات صورت گرفته را مشخص کرده است.
روی دکمه «Create Pull Request» کلیک میکنیم.
در این صفحه توضیحی را برای تغییرات صورت گرفته وارد و مجدداً روی دکمه «Create pull request» کلیک میکنیم.
ایجاد درخواست Pull همینجا با موفقیت به پایان رسید. اکنون میخواهیم مخزن فورک شده را در رایانه محلی خود کلون کنیم. پیش از آن مروری بر مفهوم «Clone» در گیت خواهیم داشت.
Clone در گیت چیست ؟
همانطور که پیشتر بیان شد، «Cloning» در گیت، عملیاتی است که برای ایجاد کپی از مخزن مورد نظر انجام میشود. مخزن موردنظر میتواند «راه دور» (Remote) یا «محلی» (Local) باشد.
با کلون کردن مخزن راه دور می توانیم نسخهای محلی را در سیستم خود داشته باشیم. همچنین، میتوانید بین دو مکان همگامسازی کنید.
git clone
، یکی از دستورات خط فرمان است که برای ایجاد کپی محلی از یک مخزن راه دور استفاده میشود و از طریق یک URL راه دور به مخزن دسترسی پیدا میکند.
معمولاً مخزن اصلی روی یک سرور راه دور، اغلب سرویس Git مانند GitHub ،Bitbucket یا GitLab قرار دارد.
$ git clone
در این قسمت از مطلب «گیت هاب چیست»، مراحل انجام «Clone» را از طریق گیت هاب و ویژوال استودیو کد و همچنین از طریق سیستم عامل، بیان میکنیم که در ادامه تشریح شدهاند. برای کلون کردن مخزن در گیت هاب، روی دکمه سبز رنگ «Code» کلیک و آدرس «https URL» را کپی میکنیم.
اگر کاربر سیستم عامل Mac هستید، کلیدهای ترکیبی Command + Shift + P
را فشرده و گزینه «Git Clone» را انتخاب میکنیم. (کاربران ویندوز میتوانند از کلید Ctrl به جای Command استفاده کنند)
سپس، URL کلون که از گیت هاب کپی کردیم را در اینجا «الصاق» (Paste) میکنیم.
اکنون یک نسخه محلی از Fork را در اختیار داریم.
در ویندوز، میبایست «Git Bash» را باز و از دستور git clone
به صورتی که در ادامه آمده است، استفاده شود.
$ git clone
چگونه مخزن خود را در ویژوال استدیو کد Clone کنیم؟
اکنون زمان آن رسیده است که مخزن ساخته شده را با استفاده از VSCode تکثیر یا Clone کنیم. برای این منظور، میبایست آدرس URL مرتبط به مخزن خود را در گیت هاب کپی و مخزن را Clone کنیم. پس به مخزن گیت هاب میرویم و URL را کپی میکنیم.
در ویژوال استدیو کد، کلیدهای ترکیبی Ctrl + Shift + P
(روی ویندوز)، یا Command + Shift + P
(برای کاربران Mac) را میفشاریم. حالا Git: Clone
را تایپ میکنیم.
URL که در محله قبل کپی کردیم را در اینجا الصاق میکنیم.
مکان مخزن روی سیستم، یعنی جایی که مایلیم تا فایل مورد نظر تکثیر شود را انتخاب میکنیم. (به طور مثال پوشهای روی دسکتاپ)
پنجره کوچکی در سمت راست و پایین صفحه نمایش ظاهر میشود، با این پیام که «آیا میخواهید مخزن کلون شده را باز کنید»، که ما Open
را انتخاب میکنیم.
حالا با رفتن به پوشه پروژه، مشاهده میکنیم که مخزن مورد نظر، کِلون شده است. اگر در مرحله قبلی و زمانیکه از شما سوال شد که «میخواهید مخزن را باز کنید»، پروژه جدید ایجاد شده را در VSCode باز نکردهاید، حالا میتولانید این کار را انجام دهید. از منوی «File»، گزینه «Open» را انتخاب کنید. به محل ذخیره مخزن کِلون شده بروید و روی دکمه «Open» کلیک کنید.
راه اندازی فایل Gitignore چگونه است؟
هنگامی که تغییری را روی گیت هاب، «Commit» میکنیم، ممکن است بخواهیم برخی موارد را از این «Commit» استثنا کنیم. به عنوان مثال، ممکن است بخواهید مانع از Commit کردن مواردی مانند «اطلاعات کاربری» (Credentials) حساس (به منظور اهداف امنیتی) یا موارد دیگری مانند فضایِکاری VS Code (فایلهایی که ویژوال استدیو کد به پروژه اضافه کرده است) شوید. حتی گاهی اوقات مواردی وجود دارند که شما نمیخواهید کامیت کنید، زیرا آنقدری اهمیت ندارند که بخواهید سابقه «Commit» خود را شلوغ کنید.
برای انجام این کار، باید یک فایل .gitignore
شامل قوانینی برای مواردی ایجاد کنیم که میخواهیم از کامیتها حذف شوند. .gitignore
، در حقیقت، فایلی متنی است که به Git میگوید کدام یک از فایلها یا پوشههای پروژه را باید نادیده بگیرد.
برای نصب فایل .gitignore
با استفاده از ویژوال استدیو کد، گزینه «New File» را از منوی «File» انتخاب یا روی آیکن «+» در پنل Explorer کلیک میکنیم.
در این فایل جدید، تمام فایلها و پوشههایی که مایل هستید تا نادیده گرفته شوند را اضافه کنید. سپس فایل را به صورت «متنی» و با نام .gitignore
، از طریق ویژوال استدیو کد ذخیره کنید.
اگر نمیدانید که چه مواردی را به این فایل اضافه کنید، میتوانید از این قالب، استفاده کنید که نمونه .gitignore
برای پایتون را نشان میدهد. توجه داشته باشید که لازم است فایل را با توجه به نیازهای خود بهروز کنید. حالا، لازم است تا فایل .gitignore
را ذخیره کنیم. برای این منظور، میتوانیم از کلیدهای ترکیبی CTRL + S
(روی ویندوز)، یا Command + S
(روی Mac) استفاده یا اینکه از منوی «File» گزینه «Save» را انتخاب کنیم.
«فضاهای کاری» (Workspaces) در ویژوال استدیو کد، قابلیت بسیار مفیدی محسوب میشوند، این فضاها میتوانند تنظیمات خاص خود را داشته باشند و پروژههایمان را به گونهای از هم جدا کنند که «Commit» در یک پروژه بر پروژههای دیگر، تأثیری نداشته باشد.
برای اینکه پیکربندی فعلی به عنوان «فضای کاری» ذخیره شود، لازم است تا از منوی «File»، گزینه «Save Workspace as»، سپس، پوشهای که در حال حاضر روی آن کار میکنیم را انتخاب کنیم. همچنین لازم است تا نامی را به آن اختصاص دهیم. در این مورد، نام فضای کاری میتواند همان نام مخزن هم باشد.
در حال حاضر، میتوانید فضای کاری ساخته شده در ویژوال استدیو کد را ملاحضه کنید. در مواقع بعدی، به منظور باز کردن این فضای کاری، کافی است تا از منوی «File» گزینه «Open Workspace…» را انتخاب کنیم.
Fetch در گیت هاب چیست ؟
دستور git fetch
، برای بیرون کشیدن (pull) بهروزرسانیها از شاخههای ردیابیِ راه دور (Remote-Tracking) مورد استفاده قرار میگیرد. به علاوه، میتوانیم بهروزرسانیهای «ارسال شده» (Pushed) به شعبههای راه دور را در سیستم محلی را دریافت کنیم.
همانطور که میدانیم، شاخه نسخهای از کد اصلی مخازن ما محسوب میشود، بنابراین شاخههای ردیابی از راه دور شاخههایی هستند که برای دریافت و ارسال (pull and push) از مخزن راه دور راهاندازی شدهاند.
چگونه مخزن گیت را Fetch کنیم؟
میتوانیم از دستور git fetch
(با آرگومانهای متعددی که دارد) برای واکشی دادههای مشخصی استفاده کنیم. برای درک کاربردهای دستور fetch، سناریوهایی در ادامه بیان شده است که با هم مرور میکنیم. سناریو اول به منظور واکشی مخزن راه دور است. ما میتوانیم کل مخزن را با کمک دستور «fetch» از آدرس URL مخزن، واکشی کنیم. شکل کلی این دستور و خروجی آن پس از اجرا، در ادامه آمده است.
$ git fetch
در ادامه، اجرای دستور «Fetch» روی آدرس مشخصی را مشاهده میکنید.
در خروجی بالا، مخزن کامل از یک URL راه دور «واکشی» (fetched) شده است. سناریوی دوم، بیانگر واکشی شاخه مشخصی است. ما میتوانیم شاخهای خاص را از مخزن مورد نظر واکشی کنیم. در ادامه، شکل کلی دستور را مشاهده میکنید.
$ git fetch
در ادامه، اجرای دستور فوق و واکشی شاخه «test» از یک URL راه دور نشان داده شده است.
سناریوی سوم، واکشی همه شاخهها به طور همزمان (Simultaneously) را بیان میکند. دستور git fetch
همچنین این امکان را برای ما فراهم میکند تا همه شاخهها را به طور همزمان از مخزن راه دور واکشی کنیم. در ادامه، کد مربوط به این مورد آورده شده است.
$ git fetch -all
همانطور که در تصویر زیر مشخص است، با اجرای دستور فوق، روی مخزن «Git-Example»، تمام شاخهها را واکشی کردهایم.
سناریوی چهارم، «همگامسازی» (Synchronize) مخزن محلی را بیان میکند. فرض میکنیم، عضوی از تیم، چندین ویژگی جدید را به مخزن راه دور ما اضافه کرده است. بنابراین، برای افزودن این به روزرسانیها به مخزن محلی خود، میتوانیم از دستور git fetch
استفاده کنیم که شکل کلی استفاده از آن در ادامه نشان داده شده است.
$ git fetch origin
اجرای دستور بالا، ویژگیهای جدید موجود در مخزن راه دور را به سیستم محلیمان اضافه کرده است (بهروز شده است). در این خروجی، شاخه «test2» و اشیاء آن، به مخزن محلی اضافه میشوند.
واکشی گیت میتواند از یک مخزن با استفاده از نام یا URL آن، یا از چندین مخزن به طور همزمان انجام شود. به عبارت دیگر، میتوان آن را نسخهای ایمن از دستور git pull
در نظر گرفت.
تفاوت بین git fetch و git pull در گیت هاب چیست ؟
برای درک تفاوت بین fetch
و pull
، لازم است تا شباهتهای میان این ۲ دستور را بدانیم. هر ۲ دستور، به منظور دانلود دادهها از مخزن راه دور استفاده میشوند، اما عملکرد متفاوتی نسبت به هم دارند. زمانیکه یک git pull
انجام میدهید، تمام تغییرات را از مخزن راه دور یا مرکزی دریافت میکند و آن را در اختیار شعبه مربوط به ما در مخزن محلیمان قرار میدهد. هنگامیکه واکشی git
را انجام میدهید، تمام تغییرات را از مخزن راه دور دریافت میکند و آن را در شاخهای جداگانه در مخزن محلی ما ذخیره میکند. میتوانیم با ادغام آن، تغییرات را در شاخههای مربوط به خود منعکس کنیم. بنابراین، میتوان آن را به صورتی که در ادامه آمده است، بیان کرد.
git pull = git fetch + git merge
در ادامه، برخی از تفاوتهای کلیدی، بین عملیات «git pull» و «git fetch» تشریح شده است.
git pull | git fetch |
دستور «pullgit » به منظور بهروزرسانی شاخه «HEAD» فعلی شما، با آخرین تغییرات از سرور راه دور، مورد استفاده قرار میگیرد. | دستور «fetchgit »، دادههای جدید را از مخزن راه دور دانلود میکند. |
دادههای جدید را دانلود میکند و آنها را به طور مستقیم در فایلهای «کپی» فعلی جای میدهد (یکپارچه میکند) . | برای دریافت نمای جدیدی از رخدادهای مخزن راه دور، مورد استفاده قرار میگیرد. |
Pull دادهها را دانلود کرده و با فایل کاری فعلی یکپارچه میکند. | دادهها را هرگز دستکاری یا خراب نمیکند. |
در این دستور، احتمال وقوع «تضاد ادغام» (Merge Conflict) وجود دارد. | کدهایمان را از ناسازگاریهای عملیات «ادغام» محافظت میکند. |
اگر پیش از این مخزن دیگری را pull کردهاید، استفاده از دستور «git pull» خیلی مناسب نیست. | توصیه میشود از دستور «fetchgit » با دستور «fetch» در مخزنی واکشی شده (pulled) استفاده کنید. |
Cherry Picking در گیت چیست؟
Cherry Picking در گیت، به این معنی است که برخی از کامیتهای یک شاخه را به شاخهای دیگر، اعمال کنیم.
اگر موردی پیش آمد که در پروژه مرتکب اشتباهی شدیم یا تغییری را به شعبه نادرستی کامیت کردیم و نمیخواهیم کل شعبه را ادغام کنیم، میتوانیم کامیت را برگردانیم و آن را در شاخه دیگری اصطلاحاً «cherry-pick» کنیم.
نحوه استفاده از دستور «cherry-pick»، در ادامه آمده است.
$ git cherry-pick
موارد استفاده از cherry-pick کدام اند؟
- cherry-pick، ابزار مفیدی برای همکاری تیمی (Team Collaboration) محسوب میشود.
- در مواردی که باگها را قرار است رفع کنیم، استفاده از این ابزار ضروری است. زیرا باگها با کامیتهای خود در شاخه «توسعه» رفع و آزمایش میشوند،.
- اغلب برای بازگرداندن تغییرات و بازیابی commitهای از دست رفته استفاده میشود. از git cherry-pick برای جلوگیری از تداخلهای غیرضروری به جای تکیه بر روشهای جایگزین استفاده کنید.
- زمانی که ادغام کامل شاخه به دلیل نسخههای ناسازگار در شاخههای مختلف امکانپذیر نباشد، ابزار مفیدی است.
- cherry-pick برای دسترسی به تغییرات ایجاد شده در زیرشاخه، بدون تغییر شاخه استفاده میشود.
Checkout در گیت چیست؟
در گیت، اصطلاح «چکاوت» یا «بیرون رفتن» (Checkout)، برای عمل سوئیچینگ بین نسخههای مختلف یک موجودیت استفاده میشود. با استفاده از دستور git checkout
، میتوانیم بین شاخههای موجود در یک مخزن، جابجا شویم.
لازم به ذکر است که هنگام جابجایی بین شاخهها، میبایست مراقب فایلهای مرحلهبندی شده (Staged) و کامیتهای خود باشیم. دستور git checkout
، بر روی ۳ موجودیت مختلف که فایلها، کامیتها و شاخهها هستند، عمل میکند. از آنجایی که این دستور گزینه «لغو» (Undo) و برگشت به حالت قبل را ندارد، استفاده از آن باید با احتیاط همراه باشد.
این دستور، شاخهها را بررسی و فایلهای موجود در پوشه کاری را بهروزرسانی میکند تا با نسخه موجود در آن شاخه مطابقت داشته باشد. سپس بهروزرسانیها را به گیت ارسال میکند تا تمام کامیتهای جدید، در آن شاخه ذخیره شوند.
عملیات موجود در چکاوت کدامند؟
ما میتوانیم عملیات متعددی را با استفاده از دستور git checkout
انجام دهیم، مانند سوئیچ به شاخهای خاص، ایجاد شاخهای جدید، Checkout شاخه راه دور و غیره. این دستور را میتوان با git branch
ترکیب کرد. با اجرای دستور git branch
میتوانیم فهرستی از شاخههای موجود را نمایش بدهیم و به شاخهای خاص منتقل شویم. برای نمایش شاخهی موجود در مخزن، از این دستور به شکلی که در ادامه امده است، استفاده میکنیم.
$ git branch
اکنون که فهرستی از شعب موجود را داریم، برای جابجایی بین شاخهها از دستور checkout branch
به شکلی که در ادامه آمده است، استفاده میکنیم.
$ git checkout
همانطوری که در خروجی مشخص است، در این مثال از شاخه اصلی به شاخه «testbranch» منتقل شدیم.
با به کارگیری پرچم «b»، همانطوری که در ادامه آمده است، میتوانیم شاخهای جدید را ایجاد کنیم و به طور همزمان به آن منتقل شویم (سوئیچ کنیم).
$ git checkout -b
در حقیقت، استفاده از این پرچم مشابه این است که دستور git branch new-branch
، قبل از اجرای git checkout new-branch
انجام شده است.
Staging در گیت هاب چیست ؟
یکی از امکاناتی که گیت در اختیار ما قرار میدهد، ناحیه اِستِیجنیگ یا «مرحلهبندی» (Staging) نام دارد که تغییرات صورت گرفته روی فایلها، که هنوز «ثبت» (Commit) نشده است را ذخیره میکند. این ویژگی به ما امکان میدهد تا با انجام تغییرات، آنها را در Commitهایی کوچکتر ثبت کنیم.
با استفاده از «مرحلهبندی» میتوانیم تغییرات را در فایلی روی کامپیوتر ذخیره کنیم. اما باید بدانیم، در صورتی که «Commit» نکنیم، گیت، نسخهای از آن را نگه نمیدارد (ذخیره نمیکند). پیش از اینکه فایلی را با گیت «Commit» کنیم (ثبت و ذخیره کنیم)، نیاز است تا تغییرات، «Stage» شده باشند. پس از آن، شرایط برای «Commit» کردن مهیا است. به این ترتیب میتوانیم تغییرات متعددی را در تنها یک کامیت، «Stage» کنیم.
Staging در ترمینال و VSCode چگونه انجام می شود؟
اگر برنامهنویسی را در محیطهایی (IDE) مانند «VSCode» انجام میدهید، بخشی به نام «پنل کنترل منبع» (Source Control Panel) در اختیار خواهیم داشت که عمل ادغام و یکپارچهسازی با Git را آسان میکند. وضعیت مربوط به «مرحلهبندی» تغییرات (اینکه Stage شدهاند یا خیر) یا اصطلاحاً وضعیت «ردیابی»، در این پنل قابل مشاهده است. اکنون با انجام «Commit»، تنها تغییراتی ثبت خواهند شد که «Stage» شدهاند.
چگونه تغییرات خود را Stage کنیم؟
در این قسمت به بیان برخی از مراحل «Staging» پرداختهایم که در ادامه، تشریح شدهاند.
راه اندازی مخزن گیت را به وسیله «Git Init» چگونه است؟
برای نشان دادن عملکرد «مرحلهبندی» یا «Staging»، با یک پروژه خالی شروع میکنیم.
با استفاده از دستور git init
، مخزن «git» را راهاندازی میکنیم.
$ git init
دستور فوق، یک مخزن git مخفی (پوشهای به نام .git
در ریشه پروژه) را ایجاد میکند.
تا این قسمت از کار، «تغییری» در پروژه رخ نداده است. بنابراین فایل جدیدی میسازیم.
$ touch new-file.txt
روش افزودن فایل به staging در گیت هاب چیست ؟
با استفاده از دستور Git add، فایلی را به «مرحلهبندی» اضافه میکنیم. دستور git add
، این امکان را برای ما فراهم میکند که فایلهایی که باید «Commit» شوند را «Stage» کنیم. اگر از VSCode استفاده میکنید، میتوانید در سورس کنترل پنل، مشاهده کنید که «تغییری» ایجاد شده است، اما هنوز هیچ «استیجی» نداریم.
با استفاده از علامت «+» در کنترل پنل منبع، میتوانیم تغییر موجود را «Stage» کنیم.
ولی در اینجا، با به کارگیری دستور «git add» در ترمینال، این کار را انجام میدهیم. برای «Stage» فایل در Git، از دستور git add
، به صورتی که در ادامه، آمده است، استفاده میکنیم.
$ git add new-file.txt
و حالا مشاهده میکنیم که «Stage» مورد نظر صورت گرفته است.
روش نمایش فایلهای Stage شده با دستور Git Status در گیت هاب چیست ؟
دستور git status
، فایلهای موجود در «ناحیه Staging» را نمایش میدهد.
$ git status
همانطور که در تصویر مشاهده میشود، تغییرات مربوط به stage قابل رویت است. اگر هیچ فایل «Stage شده» یا «تغییر یافتهای» وجود نداشته باشد، خروجی، مشابه اما متفاوت با تصویر فوق است.
اجازه دهید فایل جدیدی بسازیم و آن را «Stage» نکنیم.
$ touch new-file2.txt
$ git status
فایلهای «Untracked» بیانگر همان فایلهای «Unstaged» هستند.
اگر تغییرات جدید و تغییرات «Stage» نشدهای وجود نداشته باشد، خروجی کوتاهتری خواهیم داشت.
$ git status
On branch master
No commits yet
nothing to commit (create/copy files and use "git add" to track)
چه تغییراتی در فایل رخ داده است؟
با استفاده از دستور git diff
، میتوانیم ببینیم چه چیزی در فایلها تغییر کرده است. این دستور، فایل فعلی را با آخرین نسخه ذخیره شده، مقایسه میکند. «Git diff»، در حقیقت فرمتی نمایشی است که تفاوت بین گروههای فایلی را نشان میدهد. در صورتی که دستور git diff
را به تنهایی و بدون هیچ چیزی بعد از آن به کار ببریم، تمام تغییراتی که در مخزن وجود دارد را به شما نشان میدهد.
$ git diff
همچنین میتوانید از git diff
، همراه با نام دایرکتوری استفاده کنید تا تمام تغییراتِ ایجاد شده در دایرکتوری را به ما نشان دهد.
$ git diff changed-file.txt
اگر از git diff
همراه با نام فایل استفاده کنید، تمام تغییرات ایجاد شده در فایل به شما نمایش داده میشود.
$ git diff changed-file.txt
کامیت کردن فایلهای Stage شده چگونه است؟
حال اگر قصد «Commit» را داشته باشیم. تنها فایل(های) «Stage شده»، کامیت میشود. در مثالی که در ادامه آورده شده است، فقط new-file.txt
، کامیت خواهد شد.
$ git commit -m "only committing new-file.txt"
در ادامه، خروجی دستور فوق را مشاهده میکنید.
سوالات متداول
در این بخش از مطلب «گیت هاب چیست»، برخی از پرسشهای پرتکرار کاربران، در رابطه با موضوع «گیت هاب چیست» را به همراه پاسخهای مرتبط، بیان میکنیم.
چرا از گیت هاب استفاده میکنیم؟
گیت هاب، راهحلی فوقالعاده را برای مشارکت و همکاری در فرایند ایجاد و تکمیل پروژهها در اختیار ما قرار میدهد. با استفاده از این ابزار، نسخهای پشتیبان را از فایلی که روی آن کار میکنیم به طور دائمی، در اختیار خواهیم داشت. به این ترتیب، هیچوقت نسخههای پیشین پروژههایمان را از دست نخواهیم داد. علاوه بر این، میتوانیم با به کارگیری کدهای نوشته شده توسط سایر برنامهنویسان، پروژههای خود را سریعتر توسعه دهیم.
آیا گیت هاب برای افراد تازه کار گزینه مناسبی است؟
یادگیری و استفاده از گیت هاب برای برنامهنویسان تازهکار، کار سختی نیست. در حقیقت، برای یادگیری اینکه چگونه کدهایی را به گیت هاب «ارسال» (push) کنیم، کافی است با تعدادی از دستورات گیت هاب آشنایی داشته باشیم. اگر در حال حاضر با Git آشنایی دارید، یادگیری گیت هاب پیچیدگی چندانی ندارد، اما در غیر این صورت، یادگیری گیت هاب تلاش بیشتری را نیازمند خواهد بود.
آیا گیت هاب فقط مناسب برنامه نویسان است؟
خیر. افراد و تیمهای مختلف، از گیت هاب برای پروژههای گوناگون خود استفاده میکنند. گیت هاب برای مدیریت تیمها، اشتراکگذاری رزومهها، یافتن پروژههای جدید، پیگیری کارها و سایر موارد، استفاده میشود.
طرز کار گیت هاب چیست ؟
گیت هاب، رابطی مبتنی بر وب است که از Git استفاده میکند. گفتیم که «گیت»، نرمافزار کنترل نسخه اوپن سورسی است که به چندین نفر اجازه میدهد به طور همزمان، تغییرات جداگانهای را در پروژه، ایجاد کنند. گیت هاب، با فراهم کردن امکانِ همکاری به صورت بلادرنگ، تیمها را تشویق میکند تا برای ساخت و ویرایش محتوای سایت خود با یکدیگر مشارکت و تعامل داشته باشند.
آیا استفاده از گیت هاب بدون کدنویسی ممکن است؟
گیت هاب، محصول و وبسایتی است که برای برنامهنویسان طراحی شده است تا به طور مشارکتی کدهای خود را بسازند. اما این بدان معنا نیست که برای استفاده از آن باید حتما برنامهنویس باشیم. میتوانیم با «ردیابی نسخه مشارکتی»، پروژه (غیر برنامهنویسی) مخصوص به خود را بدون نوشتن حتی یک خط کد یا استفاده از خط فرمان، شروع کنیم.
تست کردن کدها در گیت هاب چگونه است؟
میتوان با استفاده از «GitHub Actions»، پروژههای خود را به صورت خودکار «Build» و تست کرد.
Pull Request در گیت هاب چیست ؟
درخواستی است که برای بررسی تغییرات مخزن ارسال میشود. به عبارت دیگر، زمانی که توسعهدهندگان آماده ادغام کدهای جدید در مخزن گیت هاب هستند، از آن استفاده میکنند.
درخواست Merge در گیت هاب چیست ؟
Merge تغییرات را در قالب یک درخت منسجم ادغام میکند. این کار تنها بخشی از آنچه به حساب میآید که طی عملیات Pull در گیت انجام میشود.
چند شاخه شدن مخزن در گیت هاب چیست ؟
فورک در حقیقت، رونوشتی از مخزن گیت هاب است که به وسیله ما کنترل میشود.
Clone مخزن در گیت هاب چیست ؟
نسخه محلی از مخزن میزبانی شده (مانند مخزنی در گیت هاب یا گیت لب) محسوب میشود.
تفاوت عمل Fork و Pull Request در گیت هاب چیست؟
«انشعاب» (Fork) رونوشتی از مخزن اصلی است که زیر نظر فرد مدیریت میشود. درخواست pull، درخواستی است که از جانب مالک مخزن و به منظور بررسی و ادغام تغییراتی که توسط ما صورت گرفته، در مخزن اصلی انجام میشود.
بستن درخواست واکشی در گیت هاب چیست ؟
گزینه «بستن درخواست واکشی» در گیت هاب، بدون اینکه ادغام شاخه مبدا در شاخه مقصد انجام شود، درخواست pull را میبندد.
سخن پایانی
در این مطلب از مجله تم آف، موضع «گیت هاب» و مفاهیمی مانند سیستم کنترل نسخه مورد بررسی قرار گرفت. همچنین، سعی کردیم تا حد امکان به طور جامع به این پرسش که «گیت هاب چیست»، پاسخ دهیم. همانطور که گفته شد، «Git» و «GitHub»، راههای سریع و سادهای را برای ساخت و توسعه پروژههایمان ارائه میدهند و استفاده از آنها، مزایای زیادی را برای توسعهدهندگان به همراه دارد.
GitHub به عنوان یکی از پراستفادهترین پلتفرمها در زمینه کنترل نسخه و مدیریت روند توسعه و ساخت پروژهها محسوب میشود که از کدهایمان میزبانی میکند و این امکان را به ما میدهد تا از هر مکانی، روی پروژههایمان به صورت تیمی، با دیگر برنامهنویسان، مشارکت داشته باشیم. با به کارگیری این ابزار، میتوانیم روند تغییرات کدها را مشاهده و در صورت وجود خطا، منشأ آن را بیابیم. GitHub ویژگیهای پیچیده زیادی را برای پروژهای تیمی و بزرگ به همراه دارد.
دانش بکارگیری گیت هاب در پروژهها، مهارتی بسیار ارزشمند برای برنامهنویسان به شمار میرود. همچنین داشتن پروفایل GitHub خوب که مشارکتهای مکرر و مداوم برنامهنویس را در طول سال، هم در پروژههای شخصی و هم در پروژههای دیگران نشان میدهد، میتواند به عنوان نمونهکار در ورود به بازارِ کار یا ارتقاء وضعیت شغلی، بسیار مفید واقع شود. علاوه بر ویژگیهای گفته شده در این مطلب، گیت هاب، پلتفرم و منبعی بسیار عالی برای یادگیری کدنویسی به حساب میآید و استفاده از آن تا حد زیادی به افزایش مهارت برنامهنویسی افراد کمک میکند.