ریپازیتوری در گیت هاب چیست؟ – نحوه ساخت، حذف و استفاده
«گیت» (Git) «سیستم کنترل نسخهای» (Version Control) است که کدهایمان را مدیریت و - به منظور نظارت بر تغییرات فایلها یا کدها - پیگیری میکند. از سوی دیگر، «گیت هاب» (GitHub) سرویسی است که امکان میزبانی، اشتراکگذاری و مدیریت فایلها و کدهایمان روی اینترنت را امکانپذیر میسازد. گیتهاب از Git بهعنوان لایه زیرین خود بهره میبرد و به ما امکان میدهد تا «ریپازیتوریها» (مخازن | Repository) یا پوشههای گیت خود را بهسادگی روی پتلفرم فراهمشده مدیریت کنیم. بنابراین Git سیستم کنترل نسخه است و گیت هاب، پلتفرمی که از کدهایمان میزبانی میکند. در مطلب پیشِ رو از مجله فرادرس میخواهیم به زبان ساده و تا حد امکان بهطور کامل توضیح دهیم که یکی از مؤلفههای مورد توجه برنامهنویسان، یعنی ریپازیتوری در گیت هاب چیست و نحوه ساخت و حذف آن چگونه است.
آشنایی با گیت هاب
گیت و گیت هاب را میتوان ۲ فناوری مهمی در نظر گرفت که یادگیری آن به هر توسعه دهندهای - فارغ از حوزه کاری - توصیه میشود. «گیت هاب» (GitHub)، پلتفرمی است که از کدهایمان به منظور کنترل نسخه و امکان مشارکت میزبانی میکند. بدینترتیب به ما و دیگران اجازه میدهد تا از هر مکانی بتوانیم روی پروژه مورد نظر خود کار کنیم.
کنترل نسخه که با نام سورس کنترل نیز شناخته میشود، عملیات «ردیابی» (Tracking) و مدیریت تغییرات صورت گرفته در کدهای نرمافزاری را بر عهده دارد. سیستم کنترل نسخه، به ابزاری اشاره دارد که تیمهای نرمافزاری را در امر مدیریت تغییرات صورت گرفته در سورسکدهایشان در طول زمان، یاری میکند. همزمان با شتاب گرفتن محیطهای توسعه، سیستمهای کنترل نسخه به تیمهای نرمافزاری کمک میکنند تا کار خود را سریعتر و هوشمندانهتر انجام دهند. قابلیتهای این سیستم بهخصوص برای تیمهای دِوآپس بسیار سومند است. به این دلیل که زمان توسعه را کاهش و از سویی دیگر پیادهسازیهای موفق را افزایش میدهند.
بهوسیله قابلیت «مشارکت» (Collaboration)، افراد مختلف میتوانند روی پروژهای خاص با یکدیگر همکاری داشته باشند. این قابلیت همکاری را میتوان مانند ایجاد گروهی در گیت هاب، درست شبیه به گروههایی در سایر شبکههای اجتماعی در نظر گرفت. افرادی که به فهرست «همکاران» (مشارکت کنندگان | Collaborator) افزوده میشوند، میتوانند عملیاتی نظیر push ،merge و سایر موارد این چنینی را روی پروژه اِعمال کنند.
در یکی از مطالب پیشین مجله فرادرس بهطور کامل به این موضوع پرداختیم که گیت هاب چیست، همچنین از کاربرد تا نحوه استفاده از GitHub را به زبان ساده بیان کردهایم.
در این نوشتار قرار است مفهوم مخزن یا ریپازیتوری در گیت هاب را با هم مرور کنیم. برای اجرای مثالهای بیان شده در این مطلب، ضمن دسترسی به اینترنت، میبایست یک حساب گیت هاب - با انجام ثبتنام در وبسایت آن «+» - نیز داشته باشیم. ایجاد حساب در گیت هاب، با ارائه برخی اطلاعات شخصی نظیر نام، ایمیل و تأییدیه آن، تعیین نام کاربری و رمز عبور، در کمترین زمان ممکن و بهسادگی قابل انجام است.
ریپازیتوری در گیت هاب چیست؟
«مخزن» (ریپازیتوری | Repository) به زبان ساده، چیزی نیست جزء نام جذابی که برای دایرکتوری یا پوشهای حاوی سورس کدهایمان در نظر گرفتهاند و بهوسیله نرمافزار سورس کنترل - در اینجا GitHub - پیگیری و رصد میشود.
ریپازیتوری، بهطور معمول برای سازماندهی یک پروژه بهکار میرود. ریپازیتوریها میتوانند مواردی نظیر پوشهها و فایلها، تصویر، ویدیوها، صفحات گسترده، دیتاستها و بهطور کلی هر چیزی که مورد نیاز پروژهمان باشد را در بر بگیرند. خیلی اوقات ریپازیتوریها شامل فایلی بهنام README نیز هستند که در واقع فایلی است که اطلاعاتی در مورد پروژه را نگه میدارد. فایلهای README در قالب متن معمولی زبان «مارکداون» (Markdown) نوشته میشوند. برای شروع کار و آشنایی با سینتکس Markdown میتوانید از برگه تقلبی که در این مطلب آورده شده استفاده کنید. گیت هاب این امکان را برایمان فراهم کرده است تا فایل README را همزمان با ایجاد ریپازیتوری، اضافه کنیم . البته گیت هاب، گزینههای مرسوم دیگری همچون فایل License را نیز ارائه میدهد که موضوع مورد بحث در این مطلب نیست.
ریپازیتوری میتواند، نسخهای محلی روی کامپیوتر ما و همچنین نسخهای ریموت (در جایی روی اینترنت مانند گیت هاب) داشته باشد.
نحوه ایجاد ریپازیتوری در گیت هاب چیست؟
فرض کنید که میخواهیم یک ریپازیتوری با نامhello-world ایجاد کنیم. این ریپازیتوری بهطور مثال میتواند مکانی باشد که منابع یا ایدههایمان را در آن ذخیره میکنیم یا حتی مواردی را با سایرین به اشتراک گذاشته و در مورد آن به بحث بنشینیم.
برای ایجاد ریپازیتوری کافی است تا پس از ورود به حساب گیت هاب - فارغ از هر صفحهای که در آن قرار داریم - از گوشه سمت راست و بالا روی آیکن «+»، کلیک و گزینه New repository را انتخاب کنیم.
در ادامه، با کادری شبیه به تصویر زیر رو به رو خواهیم شد که میبایست اطلاعات مورد نیاز برای ریپازیتوری جدید را در آن وارد کنیم.
- در کادر Repository name، نامی دلخواه که در اینجاhello-worldاست را برای ریپازیتوری تایپ میکنیم.
- در کادر Description، توصیفی کوتاه و دلخواه برای ریپازیتوری جدید مینویسیم.
- با انتخاب گزینههای Public یا Private، مشخص میکنیم که ریپازیتوری مورد نظر خصوصی یا عمومی باشد.
- با علامتزدن گزینه Add a README file، فایل README نیز برای ریپازیتوریمان ایجاد میشود.
- در نهایت با کلیک روی دکمه سبز رنگ Create repository، ریپازیتوری ساخته میشود. تصویر آورده شده در ادامه گویای این موضوع است.
نحوه حذف ریپازیتوری در گیت هاب چیست؟
در این قسمت میخواهیم نحوه «حذف کردن» (Deleting) یک ریپازیتوری را توصیح دهیم. نکتهای که باید مدنظر داشته باشیم این است که تنها افرادی میتوانند اقدام به حذف ریپازیتوری کنند که دارای مجوز و امتیازات مالکیت سازمان یا ادمین ریپازیتوری را داشته باشند. اگر اجازه اعضا برای حذف یا انتقال ریپازیتوریهای سازمان غیر فعال باشد، تنها مالکین سازمان امکان حذف ریپازیتوریهای آن را خواهند داشت.
حذف ریپازیتوری «عمومی» (Public)، هیچکدام از Fork-های ریپازیتوری را حذف نمیکند. در هر حال، لازم است تا به هشدارهای آورده شده در زیر، توجه کنیم.
- حذف ریپازیتوری، مجوزهای تیم و ضمایم انتشار را برای همیشه - و بهطور دائم - حذف میکند. توجه داشته باشید که این عمل، قابل برگرداندن (لغو) نیست.
- از سویی دیگر، حذف ریپازیتوری «خصوصی» (Private)، تمامی Fork-های ریپازیتوری را حذف میکند.
برخی از ریپازیتوریهای حذف شده را میتوان تا ۹۰ روز پس از حذف، بازیابی کرد. همچنین لازم به یادآوری است که عمل Fork یا «شاخهبرداری» اشاره به این موضوع دارد که کاربران میتوانند از ریپازیتوری موجود در مکان راه دور (مانند گیت هاب)، کپی شخصی خود را بسازند. منظور از کپی شخصی، این است که میتوانیم - در راستای مشارکت در پروژه - تغییرات خود را روی کپی ریپازیتوری اِعمال کنیم بدون اینکه ریپازیتوری اصلی تحت تأثیر قرار بگیرد.
فرض کنید که قصد حذف ریپازیتوری ایجاد شده در قسمت قبل، یعنی ریپازیتوریhello-world را داریم. برای این منظور کافی است تا در حساب گیت هاب خود وارد صفحه اصلی ریپازیتوری شویم. در پایین نام ریپازیتوری، روی Settings کلیک میکنیم.
به انتهای صفحه باز شده اسکرول میکنیم تا به ناحیه Danger Zone برسیم. در اینجا روی دکمه Delete this repository کلیک میکنیم.
کادری مشابه تصویر زیر باز میشود که میبایست روی دکمه I want to delete this repository کلیک کنیم.
این بار، کادری حاوی هشدارها باز میشود که برای ادامه میبایست روی دکمه I have read and understand these effects کلیک کنیم.
سپس، برای بررسی اینکه در حال حذف ریپازیتوری درستی هستیم میبایست در کادر جدیدی که باز میشود، نام ریپازیتوری را به شکل خواسته شده، تایپ و سپس دکمه Delete this repository را انتخاب کنیم.
بدین ترتیب توانستیم ریپازیتوری را با موفقیت حذف کنیم.
برگه تقلب و نکات سریع زبان Markdown
در این قسمت، مروری سریع روی تعدادی از عناصر سینتکس Markdown خواهیم داشت.
سینتکس پایهای
در ادامه، عناصری را آوردهایم که در داکیومنت اصلی آقای «John Gruber»، خالق Markdown شرح داده شده است. تمامی اپلیکیشنهای Markdown از این عناصر پشتیبانی میکنند.
عنصر | سینتکس Markdown |
عناوین | # H1 # H2 # H3 |
برجسته یا Bold | **bold text** |
کج یا Italic | *italicized text* |
نقل قول | > blockquote |
فهرست مرتب | 1. First item 2. Second item 3. Third item |
فهرست نامرتب | - First item - Second item - Third item |
کد | `code` |
خط افقی | --- |
لینک | [title](https://www.example.com) |
تصویر | ![alt text](image.jpg) |
سینتکس توسعه یافته
عناصر آورده شده در جدول زیر، با افزودن خصوصیات اضافی، عناصر پایهای را توسعه میدهند. توجه داشته باشید که ممکن است برخی از اپلیکیشنها از این عناصر پشتیبانی نکنند.
عنصر | سینتکس Markdown |
جدول | | Syntax | Description | | ----------- | ----------- | | Header | Title | | Paragraph | Text | |
بلاک کد محصور | ``` { "firstName": "John", "lastName": "Smith", "age": 25 } ``` |
پاورقی | Here's a sentence with a footnote. [^1] [^1]: This is the footnote. |
شناسه عنوان | ### My Great Heading {#custom-id} |
فهرست تعریفی | term : definition : definition |
خطخورده | ~~The world is flat.~~ |
فهرست وظایف | - [x] Write the press release - [ ] Update the website - [ ] Contact the media |
ایموجی | That is so funny! :joy: |
برجستهسازی | I need to highlight these ==very important words==. |
پایین نویس | H~2~O |
بالا نویس | X^2^ |
سوالات متداول
در این قسمت میخواهیم برخی از سوالات متداول و پرتکرار که در مورد مفهوم ریپازیتوری در گیت هاب وجود دارد را با هم مرور کنیم.
فرق Git و گیت هاب چیست؟
Git سیستمی برای کنترل نسخه است یا به بیان سادهتر تاریخچه تغییرات کدهایمان را نگه میدارد. از سویی دیگر، گیت هاب جایی است که کدهایمان در آن قرار دارند.
مخزن گیت هاب چیست؟
بهطور ساده، مخزن یا ریپازیتوری، بیانگر پوشه پروژهمان است که فایلهای مختلف در آن قرار دارند.
ریپازیتوری میزبانی شده و محلی چیست؟
اگر پوشه مربوط به پروژه روی سرورهای گیت هاب قرار داشته باشد، آنگاه با ریپازیتوری میزبانی شده یا «راه دور» (Remote) رو به رو هستیم. به این دلیل راه دور خوانده میشود که گیت هاب آن را در مکانی روی اینترنت (جاهای مختلفی در دنیا) نگهداری میکند. در این روش، دسترسی به ریپازیتوریها بهوسیله URL-های یکتایی صورت میگیرد که گیتهاب در اختیارمان قرار میدهد. از سویی دیگر، پوشه پروژه موجود روی کامپیوتر ما، ریپازیتوری «محلی» (Local) خوانده میشود.
آیا برای هر پروژه می بایست ریپازیتوری جدیدی در GitHub ایجاد کنیم؟
ریپازیتوری جدید تنها میبایست برای پروژه جدید ایجاد شود. بهعنوان مثال، اگر روی ۲ وبسایت تجارت الکترونیک مختلف کار میکنیم، آنها را در یک ریپازیتوری قرار نمیدهیم مگر اینکه الزامی وجود داشته باشد تا با هم کار کنند.
اگر پروژههای گوناگونی برای مشتریان مختلف داشته باشیم، با فرض اینکه طرف حسابمان در سمت مشتری یک نفر باشد آنگاه ممکن است تا پروژهها را در یک ریپازیتوری قرار دهیم. در غیر اینصورت توصیه میشود که جدای از هم و در ریپازیتوریهای جداگانه نگه داشته شوند.
ایجاد ریپازیتوری در گیت هاب به چه معنا است؟
ریپازیتوری تمامی فایلهای پروژهمان و تاریخچه بازبینی مربوط به هر فایل را نیز در بر میگیرد. همچنین امکان مدیریت و بحث در رابطه با پروژه، درون ریپازیتوری وجود دارد.
ویژگی ریپازیتوری خوب در گیت هاب چیست؟
ویژگی ریپازیتوری خوب در گیت هاب، این است که دارای فایل README باشد. میبایست مطمئن شویم که تمامی ریپازیتوریهای نمایشداده شده در پروفایل گیت هابمان شامل فایل README باشد که بهخوبی - و با محتوای مناسب - تدوین شده است. بهطور کلی این فایلها، مقصود کدها را بیان میکنند. همچنین هدف هر یک از پروژه ها را نیز بهوضوح، مختصر و مفید نشان میدهند. فایلهای README همچنین میتوانند دلیل اِعمال تغییراتی را توضیح دهند که در روند توسعه پروژه در کدها ایجاد میکنیم.
بهترین روش سازمان دهی ریپازیتوری در گیت هاب چیست؟
بهترین روش برای نظم بخشیدن به ریپازیتوری در گیت هاب، این است که فایلهای خود را در قالب پوشهها و دایرکتوریها سازماندهی کنیم و به بیان دیگر ریپازیتوری خود را مرتب و منظم نگه داریم. بهعنوان مثال، یک پروژه وب میتواند دایرکتوریهایی برای موارد CSS و HTML و جاوا اسکریپت و Asset-ها داشته باشد. همچنین از نامهای معنیدار و واضح استفاده میکنیم که هدف هر یک از پوشهها را نشان میدهد.
جمعبندی
در این نوشتار از مجله فرادرس، به زبان ساده و تا حد امکان بهطور کامل توضیح دادیم که مفهوم ریپازیتوری در گیت هاب چیست و نحوه ایجاد و حذف آن چگونه است.
از آنجاییکه وجود فایل README، از ویژگیهای یک ریپازیتوری خوب است، برخی از نکات مربوط به زبان Markdown را بهطور خلاصه بیان کردیم. در آخر نیز به بیان برخی از سوالات پر تکرار در رابطه با ریپازیتوریها در گیت هاب پرداختیم.