شروع کار با Git

گیت یک سیستم کنترل ورژن یا VCS است که به کمک آن می توانیم پروژه های خود را مدیریت کنیم و به کمک قابلیت Distributed در آن چندین نفر هم زمان بر روی یک پروژه کار کنند و هر یک بخشی از آن را توسعه دهند. شاید تا کنون نام سایت های Github و یا Gitlab را شنیده باشید که این دو سایت نیز از git بهره برده و این امکان را در اختیار شما قرار می دهند که سرور پروژه شما درون یک ابر ذخیره شود و دسترسی بهتری به پروژه خود داشته باشید.در گیت هاب پروژه ها به صورت عمومی به اشتراک دیگران گذاشته می شود و شما علاوه بر اینکه می توانید پروژه خود را در این سرویس نگه داری نمایید ، به دیگر پروژه ها نیز دسترسی داشته و یک Fork از پروژه دیگران برای خود ایجاد کنید. و پس از توسعه به سازنده پروژه اعلام کنید که در صورت تمایل ، تغییرات شما را در پروژه خود اعمال کند و او نیز پس از بررسی و تایید، تغییرات شما را لحاظ می نماید. بدین صورت می توانید در پروژه های دیگران شریک شوید و به پیشرفت علم کمک کنید ;). گیت لب علاوه بر این موارد این امکان را به شما میدهد تا پروژه ها را به صورت خصوصی ایجاد کنید و دسترسی و میزان سطح دسترسی را فقط به افرادی که مدنظر شما هستند و با مقداری که شما میخواهید اعمال نمایید. برای مدیریت پروژه درون کامپیوتر خود نیاز به گیت دارید که به کمک آن تغییرات خود را به پروژه اضافه کنید ، آن ها را ثبت کنید ، لاگ بگیرید ، شاخه های مختلف ایجاد کنید و حتی دیباگ کردن کد را با گیت انجام دهید. گیت به قدری گسترده است که کسی نمیتواند ادعای تسلط کامل بر روی آن را داشته باشد و از سوی دیگر به قدری ساده و کاربردی است که امروزه برای کار در هر شرکتی فراگرفتن آن یک الزام تلقی می شود. لذا اگر میخواهید درون شرکتی استخدام شوید بهتر است ابتدا با دستورات ابتدایی آن آشنا شوید و آن ها را تمرین کنید و به مرور با جستجو در اینترنت مهارت خود را افزایش دهید. در ادامه برخی از دستورات مهم و کاربردی گیت و توضیحات مختصری از آن آورده شده است که امیدوارم برایتان مفید و کارساز باشد. قبل از شروع از شما انتظار میرود که گیت را درون سیستم خود نصب کرده باشید که برای این منظور میتوانید گیت را از این سایت دانلود نمایید. همچنین برای درک بهتر می توانید از آموزش رایگان آقای جادی میرمیرانی نیز بهره ببرید. این آموزش در سایت فرادرس قرار داده شده است.1- دستور Cloneبرای ایجاد یک کپی از پروژه درکامپیوتر خود می بایست از دستور clone به شکل زیر استفاده کنید:git clone <URL> for example: git clone //sabri/Server_Git/AstroClock.git2- دستور Statusبرای آنکه وضعیت فایل های درون پروژه را مشاهده نمایید می­توانید از این دستور استفاده کنیدgit statusپس از آن سه حالت مختلف را به شما نشان می­دهد. حالت اول آن است که شما فایلی را درون پوشه پروژه اضافه نموده اید ولی هنوز آن را به پروژه Add نکرده اید که در این حالت لیستی از این فایل ها را با رنگ قرمز نشان می­دهد. حالت دوم آن ست که فایل ها را به پروژه Add کرده اید ولی هنوز commit نشده اند. که در این حالت لیستی از این فایل ها به رنگ سبز نمایش می­دهد و حالت سوم آن است که به شما پیام می­دهد فایلی برای commit وجود ندارد. در ادامه به مفهوم Add و Commit می­پردازیم.3- دستور Addپس از آنکه فایلی را اضافه نموده یا آن را تغییر داده اید نیاز است این تغییرات را به پروژه اضافه نمایید . برای این کار باید از دستور Add استفاده نمایید.git add <file name> for example: git add Readme.mdاگر تعدادی فایل را تغییر داده اید و می­خواهید همه­ی آن ها را با یکدیگر در یک دستور به پروژه اضافه نماید بدین صورت از دستور استفاده نمایید:git add -Aیاgit add .4- دستور Commitپس از اضافه نمودن فایل ها به پروژه نیاز است تا آن ها را با دستور commit و یک پیام که این تغییرات چه چیزی را نشان می دهد درون پروژه ثبت نمایید تا در صورت نیاز، مجددا به این نقطه بازگردید:git commit -m “<your Descriptions>” for example: git commit -m “Add Readme File “5- دستور Logبه کمک این دستور می­توانید تمامی commit هایی که تا کنون ثبت شده است و محل قرارگیری هر شاخه و یا tag را مشاهده نمایید. برای این کار به شکل زیر عمل می­کنید:git log6- دستور Branchبه طور کلی زمانی که پروژه ایجاد می شود یک شاخه اصلی به نام شاخه master دارد و نسخه اصلی پروژه در این شاخه قرار می­گیرد. اگر شما در زمانی تصمیم بگیرید که تغییراتی را در پروژه اعمال کنید ولی با نسخه اصلی کار نداشته باشید یک شاخه جدید از master ایجاد می­کنید و به آن شاخه رفته و تغییرات خود را اعمال می­کنید. در صورتی که تغییرات شما نهایی شد ، به شاخه اصلی master بازگشته و master را با شاخه ایجاد شده ترکیب می­کنید تا این تغییرات درون شاخه اصلی نیز اعمال شود. این قابلیت این امکان را به شما می­دهد تا چندین نفر بر روی یک پروژه شروع به کار نمایند و شاخه های خود را ایجاد و نهایتا با شاخه اصلی ترکیب نمایند.دستور زیر تمامی شاخه های درون پروزه را نشان می­دهد:git branchدستور زیر یک شاخه ایجاد می­کند:git branch <branchName> for example: git branch AddCalenderتوجه داشته باشید که با ایجاد شاخه شما به آن منتقل نمی­شوید بلکه باید به آن سوویچ کنید که در ادامه توضیحات آن آورده شده است.7- دستور Checkoutدرصورتی که بخواهید میان شاخه ها جابه­جا شوید از این دستور می­توانید کمک بگیرید:git checkout <branchName> for example: git checkout AddCalenderتوجه داشته باشید که پس از این دستور در کنار اسم پروژه در محیط git به جای master نام شاخه ای که در آن حضور دارید را نمایش می­دهد.8- دستور Mergeدر زمانی که بخواهید دو شاخه را با هم ادغام کنید از این دستور استفاده می­کنید:git merge <branchName> for example: git merge AddCalenderنکته: در زمانی که میخواهید شاخه ای را با شاخه master ادغام کنید ابتدا باید با استفاده از دستور checkout به شاخه master رفته و سپس اقدام به ادغام نمایید.9- دستور Tagبرای آنکه بتوانیم در هر بخشی که رسیدیم ورژن آن را مشخص کنیم تا در صورت نیاز به آن باز گردیم می­توانیم از دستور tag استفاده نماییم. دستور زیر تمامی tag های موجود را نشان می­دهد:git tagحال اگر بخواهیم نقطه فعلی را tag بزنیم از دستور زیر استفاده می­کنیم:git tag <tagName> for example: git tag V2.110- دستور Pushتغییرات، commit ها و شاخه ها تا زمانی که آن ها را به سرور ارسال نکنید به صورت محلی باقی می­مانند و دیگران قادر به دیدن آن­ها نخواهند بود. لذا نیاز است تا پس از اعمال آن ها از دستور push استفاده نمایید.git push11- دستور Pullدستور pull دوگان دستور push می باشد. و می­توانید آخرین تغییرات را از سرور دریافت نمایید.git pullنکته: محلی که پروژه درون سرور قرار دارد در log با نام origin master نشان داده می­شود.12- دستور Initاگر بخواهید پروژه ای را ایجاد نمایید. ابتدا به پوشه مورد نظر رفته و سپس دستور زیر را وارد می­کنید:git initدر این حالت یک پروژه به صورت محلی برای شما ایجاد می شود. اما اگر بخواهید که یک سرور برای پروژه خود در شبکه محلی ایجاد نمایید نیاز است ابتدا با دستور زیر به ساخت پروژه بپردازید و سپس پوشه ای که در آن قرار دارد را درون شبکه خود به اشتراک بگذارید. حال خود و دیگران با استفاده از دستور Clone میتوانید در پوشه مدنظر خود به پروژه دسترسی داشته باشید.git init <ProjectName>.git --bare for example: git init AstroClock.git --bare13- دستور Diffبه کمک این دستور می­توانید تفاوت فایل موجود با آخرین Commit را مشاهده نمایید و خط به خط مقایسه کنید. برای این منظور از دستور زیر استفاده کنید:git diff <FileName> for example: git diff calender.cpp