گیت یک سیستم کنترل نسخه(version control system) است که توسعه دهندگان از آن در سراسر دنیا استفاده می کنند. و به شما کمک می کند نسخه های مختلف کد برنامه خود را ردیابی کنید . و با توسعه دهندگان دیگر همکاری کنید.
اگر بر روی یک پروژه برای بازه ای طولانی کار می کنید ، ممکن است بخواهید ردیابی کنید که چه تغییراتی توسط چه کسی و در چه زمانی انجام شده است. این مساله در صورت پیش آمدن اشکالی در کد ، اهمیت بسیار بیشتری پیدا می کند! Git می تواند در این زمینه به شما کمک کند.
اما Git در ابتدا می تواند کمی ترسناک و گیج کننده باشد. خصوصا زمانی که برای اولین بار یادگیری آن را شروع می کنید ، بنابراین در این مقاله من Git را به روشی قابل درک برای شما معرفی می کنم. ما موضوعاتی مانند مخازن ، تعهدات ، شاخه ها .(repositories, commits, branches).اینکه git چیست؟ و github چیست و موارد دیگر را پوشش خواهیم داد . پس بیایید شروع کنیم!
Git یک سیستم کنترل نسخه است که شما آن را روی رایانه خود نصب می کنید. اگر می خواهید با سایر توسعه دهندگان در یک پروژه کد نویسی همکاری کنید یا روی پروژه خود کار کنید ، استفاده از Git یک صرورت است.
برای بررسی اینکه آیا Git را بر روی رایانه خود نصب کرده اید می توانید از این دستور در ترمینال خود استفاده کنید:
git --version
اگر Git را قبلاً نصب کرده باشید ، می بینید که چه نسخه ای از آن را دارید. اگر Git را نصب نکرده اید ، می توانید به وب سایت Git مراجعه کرده و به راحتی دستورالعمل های نصب را برای دانلود و نصب نسخه صحیح سیستم عامل خود دنبال کنید.
گیت هاب محصولی است که به شما امکان می دهد پروژه های Git خود را در جایی (به عبارتی در فضای ابری) در یک سرور از راه دور میزبانی کنید.
مهم است که به یاد داشته باشید که گیت همان GitHub نیست. GitHub فقط یک سرویس میزبانی است. شرکت های دیگری هستند که خدمات میزبانی را ارائه می دهند که در واقع همان کار GitHub را انجام می دهند ، مانند Bitbucket و GitLab.
شما هم می توانید با تایپ دستورات در ترمینال از Git استفاده کنید . هم می توانید از رابطهای کاربری گرافیکی (GUI) مانند Sourcetree یا GitKraken استفاده کنید.
اگر ترمینال را انتخاب کنید ، باید تحقیق و مطالعه کنید که به کدام دستورات Git نیاز دارید.
خوشبختانه شما مجبور نیستید اینها را دانه به دانه یاد بگیرید و حفظ کنید . به جز تعداد انگشت شماری از دستوراتی که معمولاً استفاده خواهید کرد ، بقیه موارد را می توانید هر زمان که احتیاج داشتید با یک جست و جوی ساده به دست بیاورید. (این کاری است که اکثر توسعه دهندگان انجام می دهند ، حتی کسانی که چندین دهه تجربه دارند). Git مستندات مفصلی را در وب سایت خود ارائه می دهد .
اگر استفاده از رابط کاربری گرافیکی را انتخاب کنید ، اقدامات مختلفی که باید انجام دهید به صورت تصویری نمایش داده می شود.
چه استفاده از ترمینال را انتخاب کنید چه رابط کاربری گرافیکی، باید اصول کار Git را درک کنید تا با اطمینان از آن استفاده کنید.
برای ادامه مقاله git چیست ، ما مثالهایی را با استفاده از Git در ترمینال با شما به اشتراک خواهیم گذاشت. اما اگر از GUI استفاده کنید ، مراحلی که ما به اشتراک می گذاریم بسیار شبیه به هم هستند. چرا که هسته کار یکی است.
برای استفاده از Git باید پروژه ای داشته باشیم که قصد داریم نسخه آن را کنترل کنیم. این می تواند یک پروژه جدید باشد یا یک پروژه ای که از قبل روی آن کار کردیم.
اگر این یک پروژه جدید است ، پس ما باید یک پوشه پروژه جدید ایجاد کنیم (نکته: ما می توانیم از دستور mkdir برای ساخت پوشه استفاده کنیم ) و سپس به پوشه آن پروژه در ترمینال برویم .
اگر بخواهیم یک پروژه موجود را انتخاب کنیم ، به سادگی به پوشه آن پروژه از طربق ترمینال می رویم.
در مثالی که ما می زنیم، یک پوشه برای پروژه جدید ایجاد خواهیم کرد به نام novel.
وقتی وارد پوشه پروژه خود شدیم ، برای شروع استفاده از Git باید مخزنی را با استفاده از دستور git init ایجاد کنیم .
هنگامی که دستور را با تایپ کردن آن در ترمینال و فشار دادن enter اجرا می کنیم .به نظر می رسد که اتفاق خاصی نیفتاده است. اما اشتباه نکنید ، Git گاهی اوقات بسیار ساکت و بی سر و صدا عمل می کند اما در پشت صحنه اقدامات زیادی را انجام می دهد.
برای اینکه ببینیم Git در پشت صحنه چه کاری انجام داده است ، باید فایل های مخفی خود را مشاهده کنیم. مطمئن شوید که پوشه پروژه خود را در سیستم فایل سیستم عاملتان باز می کنید. اگر در سیستم عامل Mac هستید می توانید Command + Shift + Dot را وارد کنید تا بتوانید فایل های مخفی را در سیستم فایل خود مشاهده کنید. اگر از سیستم عامل Windows استفاده می کنید ، می توانید تنظیمات نمای خود را تغییر دهید تا بتوانید پرونده های مخفی را در سیستم خود مشاهده کنید.
به منظور مشاهده فایل های مخفی با استفاده از ترمینال می توانیم از دستور زیر استفاده کنیم :
ls -a
چیزی که اکنون باید مشاهده کنیم پوشه ای به نام git. در داخل پوشه پروژه ماست. این همان چیزی است که مخزن (Repository) ما را نشان می دهد.
Repository ما همان پوشه git. در داخل پوشه پروژه ما است. آن کلیه تغییرات ایجاد شده در فایل های پروژه ما را ردیابی کرده و آن تاریخ را با گذشت زمان ثبت می کند.
مخزنی (repository) که ما در رایانه خود داریم به عنوان مخزن محلی (local repository) شناخته می شود .
پیش از این ما به خدمات میزبانی مانند GitHub ، GitLab و Bitbucket اشاره کردیم. هنگامی که ما مخزن محلی خود را به یکی از این سرویس ها وارد می کنیم( همان آپلود کردن به آن سرویس)، مخزنی که در این سرویس در فضای ابری قرار می گیرد به عنوان مخزن از راه دور (remote repository) شناخته می شود .
استفاده از یک مخزن از راه دور برای اینکه بتوانید با افراد دیگر بر روی پروژه ای همکاری کنید . همچنین در صورت بروز اتفاقی برای لپ تاپ یا رایانه ما ، از پروژه های خود بک آپ داشته باشید ،بسیار مهم است.
اگر توسعه دهنده دیگری بخواهد در پروژه ما با ما همکاری کند ، می تواند remote repository را از سرویس میزبانی که شما پروژه تان را در آن بارگذاری کرده اید ، Clone (یا به عبارت دیگر دانلود ) کند.
این به آنها امکان می دهد پروژه را روی رایانه خود نیز داشته باشند. پس از پروژه موجود در رایانه آنها نیز به عنوان مخزن محلی (local repository) یاد می شود.
در یک پروژه با چندین توسعه دهنده ، هر کدام یک مخزن محلی (local repository) در رایانه خود دارند. و یک remote repository وجود دارد که همه آنها به آن کمک می کنند و از آن برای به اشتراک گذاشتن کارهای خود استفاده می کنند.
به منظور ذخیره نسخه های مختلف پروژه خود در Git ، ما از commits استفاده می کنیم.
commit یک نسخه از پروژه شما می باشد. این یک نسخه مستقل از پروژه شما است .پس به کلیه فایل ها و پوشه هایی که بخشی از آن نسخه هستند اشاره دارد.
برای درک چگونگی ساخت commit ، باید در مورد سه فضای مختلف درون گیت- working directory, staging area و commit history – اطلاعات کسب کنیم.
working directory اساسا همان محتویات پوشه پروژه ما ( یک دایرکتوری همان فولدر است) را بیان می کند. در واقع نوعی محل کار است که در آن می توانیم پرونده هایی را به پروژه خود اضافه ، ویرایش و حذف کنیم.
staging area و commit history بخشی از مخزن(repository) ما هستند.
staging area مانند یک فضای پیش نویس برای پروژه ما است. جایی است که می توانیم نسخه های به روز شده فایل ها را اضافه کنیم یا فایل ها را حذف کنیم تا آنچه را می خواهیم در commit بعدی خود .(نسخه بعدی پروژه خود). قرار دهیم ، انتخاب کنیم. در git. پوشه staging area با فایلی به نام index نمایش داده می شود.
و در نهایتcommit history جایی است که commit های ما پس از ساخته شدن ذخیره می شوند . در پوشه hot. تاریخچه commit ها با پوشه ای به نام objects نمایش داده می شود.
اگر قصد شروع پروژه جدیدی دارید ، اولین فایل را در پروژه جدید خود ایجاد می کنید.ما در پروژه ی مثال خود با پوشه ای به نام novel یک فایل متنی ساده به نام ایجاد chapter1 می کنیم. ما می توانیم این کار را با استفاده از ویرایشگر متن یا مستقیماً در ترمینال انجام دهیم. در این مثال ما این کار را مستقیماً در ترمینال با تایپ touch chapter1.txt انجام می دهیم .
اگر یک پروژه ای را از قبل در دسترسی دارید ، برخی از فایل های موجود را ویرایش می کنید. فایل های جدید اضافه می کنید یا فایل ها را حذف می کنید.
بعد ، می توانیم از دستور git status استفاده کنیم . این دستور وضعیت working directory وstaging area را به ما نشان می دهد .و اگر تفاوتی بین این دو وجود داشته باشد به ما می گوید.
در مثال ما ، فقط یک فایل جدید به پروژه جدید خود اضافه کردیم. هنگامی که از دستور git status استفاده می کنیم ، Git به ما می گوید که ما یک فایل ردیابی نشده در فهرست کار خود داریم .و باید ازدستور git add برای وارد کردن آن در commit ، استفاده کنیم. که ما را به مرحله 2 می رساند.
ما می توانیم از دستور git add برای اضافه کردن فایل های جدید یا به روز شده درStaging Area استفاده کنیم. اگر تصمیم گرفتیم که نمی خواهیم برخی از پرونده هایی را که تغییر داده ایم در commit بعدی خود قرار دهیم.می توانیم به راحتی مطمئن می شویم که آن پرونده های خاص را به قسمت Staging Area اضافه نمی کنیم.
در مثال ما ، ما با استفاده ازدستور git add و دادن نام فایل ، تنها فایلی را که در پروژه خود داشتیم به منطقه staging اضافه کردیم . پس اگر اکنون از دستور git status استفاده کنیم می بینیم که Git به ما خواهد گفت که فایل خود را به Staging Area اضافه کرده ایم.
این نکته را نیز به یاد داشته باشید که فایل های شما از working directory به staging area کپی می شوند و جا به جا نمی شوند.
سرانجام ، برای انجام commit از دستور git commit با گزینه m- استفاده می کنیم .سپس یک متن برای commit خود می گذاریم مثلا:
git commit -m "in avalin commit ma ast".
سپس می توانیم از دستور git log برای لیست کردن همه commit هایی که در پروژه خود داریم به ترتیب زمانی معکوس استفاده کنیم. در مثال ما فقط یک commit داریم.
اکنون ما اولین commit خود را در پروژه خود انجام داده ایم! به عبارت دیگر ما نسخه اول پروژه خود را ذخیره کرده ایم.
commit ها دارای یک هش تشکیل شده از 40 کاراکتر هستند . commit hash ترکیبی از 40 حرف و اعداد است .که به عنوان یک نام برای commit و یا یک راه برای اشاره به آن استفاده می شود.
همچنین می توانیم اطلاعاتی از جمله اینکه چه کسی commit را انجام داده است . چه زمانی commit انجام شده است و پیام commit را مشاهده کنیم.
repository متشکل از چندین commit است. و در ساده ترین حالت هر commit دارای یک commit اصلی است که همان commit ای است که قبل از آن ساخته شده. به همین دلیل است که یک commit به commit که قبل از آن در تصویر زیر آمده اشاره می کند.
مباحث پیچیده تری نیز وجود دارد که وارد حوزه چندین شاخه و ادغام می شویم . اما از حوصله این مقاله خارج است.
شاخه(Branch) یک اشاره گر به commit است. branch پیش فرض در Git با نام master یا main شناخته می شود .
با رفتن به پوشه git. و سپس باز کردن پوشه refs،سپس باز کردن پوشه heads و در آخر باز کردن فایلی به نام master ، می توانیم ببینیم که branch یک اشاره گر به یک commit است . درون این پرونده خواهیم دید که یک هش وجود دارد. این هش همان هش commit ما است که branch در حال اشاره کردن به آن است.
ما می توانیم یک بار دیگر از دستور git log برای لیست کردن همه commit های در repository خود استفاده کنیم و خواهیم دید که آن هش کنار commit ی که برچسب master بغل آن در پرانتز است ، قرار می گیرد.
در ترمینال با تایپ کردن دستور git branch می توان لیستی از همه branch ها را مشاهده کرد .
شاخه ها واقعاً مهم هستند زیرا همکاری با دیگران و کار همزمان روی چندین ویژگی یا قسمتهای مختلف پروژه شما را بسیار آسان می کند.
با ثبت commit های بیشتر ، branch ای که در آن هستیم به روز می شود تا به آخرین commit ثبت شده اشاره کند.
در پایان اگر می خواهید صفر تا صد git را بیاموزید حتما از دوره جامع git یودمی ایران استفاده کنید زیرا این تنها یک لایه سطحی از آنچه git ارایه می دهد بود.