کار با گیت ، هر آنچه نیاز دارید. (قسمت اول)

می خوام توی اولین پستم در ویرگول تمام اطلاعاتی که در مورد گیت جمع آوری کردم را در اختیار شما بزارم.قبل از هر چیزی باید چواب چندتا سوال رو بدیم.گیت چیست؟ گیت یک سیستم ورژن کنترل (VCS) است که محبوبیت زیادی دارد.سیستم ورژن کنترل چیست؟ تغییراتی که در فایل های متنی ما ایجاد می شود را مدیریت می کند. میتوانیم تغییرات را نسخه بندی کرده و در هر زمان به تمام تغییرات ایجاد شده در فایل هایمان در هر نسخه دسترسی داشته و آنها را بررسی کنیم. همچنین به طور همزمان چند نفر می توانند بر روی یک پروژه کار کرده و کد های خود را در اختیار دیگران قرار دهند.چگونه با گیت کار کنیم؟شما میتونید روی سیستم خودتون نرم افزار گیت را دانلود کرده و از اون استفاده کنید؛و یا از سرویس های آنلاینی که خدمات گیت رو ارائه میدهند مانند گیت هاب و یا گیت لب استفاده کنید.الان چی یاد میگیریم؟!در واقع شما میتونید برای کار با گیت از محیط های گرافیکی(مثل این) که برای کار راحت تر با گیت طراحی شده اند استفاده کنید و یا به صورت کامندی دستورات گیت رو اجرا کنید، توی این آموزش ما دستورات رو یاد میگیریم و گیت رو به صورت کامندی استفاده می کنیم.حالا بریم سراغ آموزشمون:اول از همه باید یک ریپوزیتی (repository) داشته باشیم ، محلی که اطلاعاتی که گیت جمع آوری میکنه و بهش نیاز داره اونجا قرار میگیره. پس یه پوشه جدید میسازیم و این دستور رو توی اون اجرا می کنیمgit initهمچنین می تونیم از ریپوزیتی که شخص دیگری ساخته و باهاش کار کرده استفاده کنیم ، برای اینکار باید اون رو از یک محل دیگه کلون (clone) کنیمgit clone /path/to/repositoryیا برای دریافت از سرورgit clone username@host:/path/to/repositoryریپوزیتی ما دارای سه ساختار درختی هست که توسط گیت کنترل میشه. اولی تمام فایل هایی هست که توی پوشه ای که گیت اون رو کنترل میکنه وجود دارند،دومی index هست که فایل هایی که اونها رو توسط گیت کنترل می کنیم و در حال ویرایش اونا هستیم رو شامل میشه و آخری هم head هست که فایل های نهایی مون رو توی خودش داره.مایک ریپوزیتی ساختیم ، حالا باید فایل هایی که میخوایم گیت تغییرات اون ها رو ذخیره کنه رو بهش معرفی کنیمgit add <filename>یا برای افزودن تمام فایل هایی که داخل پوشمون هستgit add *الان تغییراتمون ذخیره نمیشه برای ذخیره کردن اونها باید دستور زیر رو اجرا کنیم همچنین باید یه توضیحی در مورد تغییراتی که انجام دادیم رو به همراه اونا ذخیره کنیم که بعدا برای فهمیدن اینکه چیکار کردیم کمکمون کنهgit commit -m &quotCommit message&quotبرای رفتن به یک commit و ادامه توسعه از اون دستور زیر رو استفاده کرده که f6b4a68485 شناسه commit ای که میخوایم به اون بریم هستgit checkout f6b4a68485توصیه میشه برای نسخه هایی از پروژتون که تکمیل میشه یک تگ اضافه کنید ، تا بعدا بهتر به نسخه بندی هاتون دسترسی داشته باشید.در دستور زیر 1.0.0 نسخه نرم افزارتون و f6b4a68485 شناسه کامیتی که انجام دادین هست(توسط دستور بعدی میتونید اون رو بدست بیارید)git tag 1.0.0 f6b4a68485برای بررسی commit هایی که انجام دادیم همراه با اطلاعات کامل(مثل id ،زمان انجام ،کاربر ارسال کننده و ...) میتونیم از دستور زیر استفاده کنیمgit logبرای بررسی تغییرات ایجاد شده در یک فایلgit diff file_nameما می تونیم تغییراتمون رو توی شاخه های مختلف انجام بدیم! یعنی مثلا چندتا شاخه بسازیم و یکی از اونها برای توسعه گرافیک پروژه ، دیگری برای منطق پروژه و ... باشه و به صورت و موازی هر کسی یک شاخه رو توسعه بده و در آخر مدیر پروژه در صورت تایید یا انجام ویرایشی اونها رو به شاخه اصلی (master) متصل کنه.برای ساختن شاخه جدید با نام graphic و رفتن به اونgit checkout -b graphicو برای رفتن به شاخه mastergit checkout masterو برای اتصال ترکیب یک شاخه با شاخه ای که الان در اون هستیمgit merge <branch>وبرای حذف شاخه graphicgit branch -d graphicهمچنین میتونیم تفاوت های دو شاخه رو با هم ببینیمgit diff <source_branch> <target_branch>حالا میتونیم پروژمون رو روی یک ریپوزیتی آنلاین هم داشته باشیم برای اینکار میتونیم از گیت هاب و یا سرویس های مشابه که گیت رو ارائه می دهند استفاده کرده و یا روی سرور خودمون ازش استفاده کنیم.اول باید یک ریموت که دارای آدرس سرورمون هست رو بسازیمgit remote add origin <server>و برای ارسال شاخه master توسط ریموت origingit push origin masterو اگر بخواهیم آخرین تغییرات رو از سرور دریافت کنیمgit pull